我正在尝试让android应用程序在后台运行。所以我创建了一个IntentService,我必须将一个对象传递给它。所以我让Object实现了Parcelable。 Probelm是该对象包含另一个包含处理程序的对象。所以我想让内部对象可序列化以便传递它将包裹。但我得到了这个错误。
07-29 10:16:08.660:E / AndroidRuntime(29387):致命异常:主要 07-29 10:16:08.660:E / AndroidRuntime(29387):java.lang.RuntimeException:无法启动活动ComponentInfo {tinygsn.gui.android/tinygsn.gui.android.ActivityListVSNew}:java.lang.RuntimeException:Parcelable遇到IOException编写可序列化对象(name = tinygsn.controller.AndroidControllerListVSNew) 07-29 10:16:08.660:E / AndroidRuntime(29387):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2110) 07-29 10:16:08.660:E / AndroidRuntime(29387):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135) 07-29 10:16:08.660:E / AndroidRuntime(29387):在android.app.ActivityThread.access $ 700(ActivityThread.java:140) 07-29 10:16:08.660:E / AndroidRuntime(29387):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1237) 07-29 10:16:08.660:E / AndroidRuntime(29387):在android.os.Handler.dispatchMessage(Handler.java:99) 07-29 10:16:08.660:E / AndroidRuntime(29387):在android.os.Looper.loop(Looper.java:137) 07-29 10:16:08.660:E / AndroidRuntime(29387):在android.app.ActivityThread.main(ActivityThread.java:4921) 07-29 10:16:08.660:E / AndroidRuntime(29387):at java.lang.reflect.Method.invokeNative(Native Method) 07-29 10:16:08.660:E / AndroidRuntime(29387):at java.lang.reflect.Method.invoke(Method.java:511) ?07-29 10:16:08.660:E / AndroidRuntime(29387):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1027) 07-29 10:16:08.660:E / AndroidRuntime(29387):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794) 07-29 10:16:08.660:E / AndroidRuntime(29387):at dalvik.system.NativeStart.main(Native Method) 07-29 10:16:08.660:E / AndroidRuntime(29387):引起:java.lang.RuntimeException:Parcelable遇到IOException写入可序列化对象(name = tinygsn.controller.AndroidControllerListVSNew) 07-29 10:16:08.660:E / AndroidRuntime(29387):在android.os.Parcel.writeSerializable(Parcel.java:1279) 07-29 10:16:08.660:E / AndroidRuntime(29387):at tinygsn.beans.VSensorConfig.writeToParcel(VSensorConfig.java:772) 07-29 10:16:08.660:E / AndroidRuntime(29387):在android.os.Parcel.writeParcelable(Parcel.java:1254) 07-29 10:16:08.660:E / AndroidRuntime(29387):在android.os.Parcel.writeValue(Parcel.java:1173) 07-29 10:16:08.660:E / AndroidRuntime(29387):在android.os.Parcel.writeMapInternal(Parcel.java:591) 07-29 10:16:08.660:E / AndroidRuntime(29387):在android.os.Bundle.writeToParcel(Bundle.java:1619) 07-29 10:16:08.660:E / AndroidRuntime(29387):在android.os.Parcel.writeBundle(Parcel.java:605) 07-29 10:16:08.660:E / AndroidRuntime(29387):在android.content.Intent.writeToParcel(Intent.java:6814) 07-29 10:16:08.660:E / AndroidRuntime(29387):在android.app.ActivityManagerProxy.startService(ActivityManagerNative.java:2655) 07-29 10:16:08.660:E / AndroidRuntime(29387):在android.app.ContextImpl.startService(ContextImpl.java:1322) 07-29 10:16:08.660:E / AndroidRuntime(29387):在android.content.ContextWrapper.startService(ContextWrapper.java:390) 07-29 10:16:08.660:E / AndroidRuntime(29387):at tinygsn.model.vsensor.VirtualSensor.start(VirtualSensor.java:109) 07-29 10:16:08.660:E / AndroidRuntime(29387):at tinygsn.controller.AndroidControllerListVSNew.startActiveVS(AndroidControllerListVSNew.java:126) 07-29 10:16:08.660:E / AndroidRuntime(29387):at tinygsn.gui.android.ActivityListVSNew.setUpController(ActivityListVSNew.java:98) 07-29 10:16:08.660:E / AndroidRuntime(29387):at tinygsn.gui.android.ActivityListVSNew.onCreate(ActivityListVSNew.java:82) 07-29 10:16:08.660:E / AndroidRuntime(29387):在android.app.Activity.performCreate(Activity.java:5206) 07-29 10:16:08.660:E / AndroidRuntime(29387):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094) 07-29 10:16:08.660:E / AndroidRuntime(29387):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2074) 07-29 10:16:08.660:E / AndroidRuntime(29387):......还有11个 07-29 10:16:08.660:E / AndroidRuntime(29387):引起:java.io.NotSerializableException:tinygsn.gui.android.ActivityListVSNew $ 1 07-29 10:16:08.660:E / AndroidRuntime(29387):at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1364) 07-29 10:16:08.660:E / AndroidRuntime(29387):at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671) 07-29 10:16:08.660:E / AndroidRuntime(29387):at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517) 07-29 10:16:08.660:E / AndroidRuntime(29387):at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481) 07-29 10:16:08.660:E / AndroidRuntime(29387):at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:979) 07-29 10:16:08.660:E / AndroidRuntime(29387):at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:368) 07-29 10:16:08.660:E / AndroidRuntime(29387):at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1074) 07-29 10:16:08.660:E / AndroidRuntime(29387):at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1404) 07-29 10:16:08.660:E / AndroidRuntime(29387):at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671) 07-29 10:16:08.660:E / AndroidRuntime(29387):at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517) 07-29 10:16:08.660:E / AndroidRuntime(29387):at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481) 07-29 10:16:08.660:E / AndroidRuntime(29387):在android.os.Parcel.writeSerializable(Parcel.java:1274) 07-29 10:16:08.660:E / AndroidRuntime(29387):... 28更多
以下是代码的一些部分:
public class VSensorConfig implements Parcelable {
dest.writeSerializable(getController());
}
public static final Parcelable.Creator<VSensorConfig> CREATOR = new Creator<VSensorConfig>() {
public VSensorConfig createFromParcel(Parcel source) {
return new VSensorConfig(source);
}
public VSensorConfig[] newArray(int size) {
return new VSensorConfig[size];
}
};
}
这是我的另一堂课:
public class ActivityListVSNew extends SherlockActivity implements Serializable {
public void setUpController() {
handlerVS = new Handler() {
@Override
public void handleMessage(Message msg) {
vsList = (ArrayList<VirtualSensor>) msg.obj;
renderLayout(vsList);
};
};
controller = new AndroidControllerListVSNew(this);
controller.setHandlerVS(handlerVS);
controller.loadListVS();
controller.startActiveVS();
}
还有其他办法吗? 如果没有,我怎么能把这个对象传递给我的服务。我使用putPracable方法将数据发送到IntentService。
由于