तो बुनियादी तौर पर मैं इस ट्यूटोरियल http://mindtherobot.com/blog/37/android-architecture-tutorial-developing-an-app-with-a-background-service-using-ipc/Parcelable IOException serializable वस्तु
माध्यम से चला गया लेखन क्योंकि यह है का सामना करना पड़ा और अधिक या कम मैं क्या हासिल करना चाहते। मैं चाहता हूं कि मेरी जीपीएस सेवा लगातार जीपीएस निर्देशांक एकत्रित करने और उन्हें एक सरणी में सहेजने के लिए पृष्ठभूमि में चल रही हो, इस तरह कोई उपयोगकर्ता किसी अन्य गतिविधि में स्वैप कर सकता है और मानचित्र गतिविधि पर वापस आ सकता है और यह अभी भी अपने पूरे रिकॉर्ड किए गए पथ को प्लॉट कर सकता है।
इसलिए मैंने आईपीसी स्थापित करने के लिए इस ट्यूटोरियल को कार्यान्वित किया और ऐसा लगता है कि यह कम या ज्यादा काम कर रहा है लेकिन मुझे डेटा को मेरी गतिविधि में वापस लाने में समस्या आ रही है। यहां मेरी फाइलें हैं, सबसे पहले मेरी पार्सेलबल ऑब्जेक्ट है जो एक ऐसी सूची है जो GPSObject के पास रखेगी। अगला मेरे जीपीएसऑब्जेक्ट्स हैं जो केवल एक धारावाहिक वस्तु है जिसमें एंड्रॉइड स्थान ऑब्जेक्ट से कुछ जानकारी शामिल है।
package com.android.SnowFever;
import java.util.ArrayList;
import java.util.List;
import com.android.SnowFever.*;
import com.google.android.maps.GeoPoint;
import android.os.Parcel;
import android.os.Parcelable;
public final class GPSResult implements Parcelable {
public static final Creator<GPSResult> CREATOR = new Creator<GPSResult>() {
@Override
public GPSResult[] newArray(int size) {
return new GPSResult[size];
}
@Override
public GPSResult createFromParcel(Parcel source) {
return new GPSResult(source);
}
};
private List<GPSObject> geoPoints;
public GPSResult() {
geoPoints = new ArrayList<GPSObject>();
}
@SuppressWarnings("unchecked")
private GPSResult(Parcel source) {
geoPoints = source.readArrayList(GPSService.class.getClassLoader());
}
public void addGPS(GPSObject location) {
geoPoints.add(location);
}
public List<GPSObject> getGeoPoints() {
return geoPoints;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeList(geoPoints);
}
}
और ये मेरे GPSObject वर्ग है
package com.android.SnowFever;
import java.io.Serializable;
import com.google.android.maps.GeoPoint;
import android.location.Location;
public class GPSObject implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
float spd, acc;
double lat, lng, alt;
GeoPoint gp;
public GPSObject(Location l) {
lat = l.getLatitude() * 1E6;
lng = l.getLongitude() * 1E6;
alt = l.getAltitude();
spd = l.getSpeed();
acc = l.getAccuracy();
gp = new GeoPoint((int)lat,(int)lng);
}
}
मेरी GPSResult सूची में फ़ाइलों को जोड़ने के लिए मैं फोन
latestGPSResult.getGeoPoints().add(new GPSObject(location));
और मैं, एक बड़ा हिस्सा धागा विषय में त्रुटि शामिल हो जाओ
11-01 18:49:06.818: E/JavaBinder(20754): *** Uncaught remote exception! (Exceptions are not yet supported across processes.)
11-01 18:49:06.818: E/JavaBinder(20754): java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.android.SnowFever.GPSObject)
11-01 18:49:06.818: E/JavaBinder(20754): at android.os.Parcel.writeSerializable(Parcel.java:1176)
11-01 18:49:06.818: E/JavaBinder(20754): at android.os.Parcel.writeValue(Parcel.java:1130)
11-01 18:49:06.818: E/JavaBinder(20754): at android.os.Parcel.writeList(Parcel.java:519)
11-01 18:49:06.818: E/JavaBinder(20754): at com.android.SnowFever.GPSResult.writeToParcel(GPSResult.java:52)
11-01 18:49:06.818: E/JavaBinder(20754): at com.android.SnowFever.GPSApi$Stub.onTransact(GPSApi.java:52)
11-01 18:49:06.818: E/JavaBinder(20754): at android.os.Binder.execTransact(Binder.java:320)
11-01 18:49:06.818: E/JavaBinder(20754): at android.os.BinderProxy.transact(Native Method)
11-01 18:49:06.818: E/JavaBinder(20754): at com.android.SnowFever.GPSListener$Stub$Proxy.handleGPSUpdated(GPSListener.java:76)
11-01 18:49:06.818: E/JavaBinder(20754): at com.android.SnowFever.GPSService$GeoUpdateHandler.onLocationChanged(GPSService.java:91)