【发布时间】:2014-05-01 17:40:34
【问题描述】:
我有一个包含 Socket、PrintWriter 类引用的复杂类“Class11”。 我在尝试在活动之间传递它时遇到异常。
public interface Interface11 extends Parcelable{
...........
}
public class Class11 implements Interface11 {
Socket clientSocket;
ServerSocket serverSocket;
PrintWriter writer;
BufferedReader reader;
private JChatConnection(Parcel in) {
Object [] objects= in.readArray(Object.class.getClassLoader());
clientSocket=(Socket) objects[0];
serverSocket=(ServerSocket) objects[1];
writer=(PrintWriter) objects[2];
reader=(BufferedReader) objects[3];
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
Object objects[] = new Object[4];
objects[0]=clientSocket;
objects[1]=serverSocket;
objects[2]=writer;
objects[3]=reader;
dest.writeArray(objects);
}
public static final Parcelable.Creator<Class11> CREATOR =
new Parcelable.Creator<Class11>() {
public Class11 createFromParcel(Parcel in) {
return new Class11(in);
}
public Class11[] newArray(int size) {
return new Class11[size];
}
};
};
虽然我可以选择通过静态对象引用共享它, 但为了减少耦合,我试图通过意图传递它, & 我遇到了异常:
java.lang.RuntimeException: unable to marshall value Socket[address=/192.168.43.225,port=9990,localport=213234]
at android.os.Parcel.writeValue(Parcel.java:1137)
at android.os.Parcel.writeArray(Parcel.java: 543)........
- 是因为 Socket ,PrintWriter 不可分割还是,
- 我在 writeToParcel() 和 private Class11(Parcel in) 处弄乱了这段代码
有人知道如何在活动之间传递这个对象吗?
【问题讨论】:
-
只是我们的好奇,您的应用中是否也有 Class1、Class2、Class3...,还是只是一个域名?
-
这是隐藏我班级原名的残忍企图! - 007 的秘密。
标签: java android sockets serialization parcelable