|
想通过Intent在不同app间传递自定义对象;
public class ObjPar implements Parcelable{
private String mName;
private String mAddr;
private int mId;
// private IBinder mBinder;
public ObjPar(){
super();
}
public ObjPar(Parcel par){
mName = par.readString();
mAddr = par.readString();
mId = par.readInt();
}
@Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
// TODO Auto-generated method stub
dest.writeString(mName);
dest.writeString(mAddr);
dest.writeInt(mId);
}
public static final Parcelable.Creator<ObjPar> CREATOR = new Creator<ObjPar>(){
@Override
public ObjPar createFromParcel(Parcel source) {
// TODO Auto-generated method stub
return new ObjPar(source);
}
@Override
public ObjPar[] newArray(int size) {
// TODO Auto-generated method stub
return new ObjPar[size];
}
};
public String getName(){
return mName;
}
public void setName(String name){
mName = name;
}
public String getAddr(){
return mAddr;
}
public void setAddr(String addr){
mAddr = addr;
}
public int getId(){
return mId;
}
public void setId(int id){
mId = id;
}
}
用Intent传递这个对象到另一个app
Intent intent = new Intent();
intent.setClassName("yu.obj", "yu.obj.Main");
Bundle bundle = new Bundle();
bundle.putParcelable("parcel", parcel);
intent.putExtras(bundle);
startActivity(intent);
接收端:
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
if(null != bundle){
ObjPar par = bundle.getParcelable("parcel");
}
当执行到 在发送端加上: intent.setExtrasClassLoader(ObjPar.class.getClassLoader()); 问题依旧存在 |
|
| 40分 |
不同的APP属于不同的进程, 此时需要使用进程通信。可以使用AIDL这个东西来解决。
|
|
是不是可以这样理解,parcelable不能在不同进程间传递自定义类对象; |
|
|
基本类型。 |
|