如何使用a 传递object
a ?class
intent
前任。
MyClass mc = new MyClass();
我怎样才能通过mc
使用intent
?
如何使用a 传递object
a ?class
intent
前任。
MyClass mc = new MyClass();
我怎样才能通过mc
使用intent
?
Parcel 是一种轻量级的 IPC(进程间通信)数据结构,您可以在其中将对象扁平化为字节流。
Parcelable 是一个特定于 Android 的接口,您可以在其中自己实现序列化。它的创建比 Serializable 更有效,并解决了默认 Java 序列化方案的一些问题。
1.实现一个接口 android.os.Parcelable ,它将生成 Parcelable 类的对象。
2.重写android.os.Parcelable接口的两个方法如下:
describeContents() - 定义您要打包的对象类型。
writeToParcel(Parcel dest, int flags) - 实际的对象序列化/扁平化发生在这里。您需要单独包裹对象的每个元素。
3.定义一个类型为 Parcelable.Creator 的名为 CREATOR 的变量
http://prasanta-paul.blogspot.com/2010/06/android-parcelable-example.html
Java中的序列化太慢了+无法满足Android的进程间通信要求。因此,该团队构建了 Parcelable 解决方案。Parcelable 方法要求您显式序列化类的成员,但最终,您可以更快地序列化对象。
Serializable 的问题在于它试图适当地处理阳光下的一切,并使用大量反射来确定正在序列化的类型。
使用可序列化对象,并直接将其保存在 Bundle 或 Intent 中
发送对象
Intent mIntent=new Intent();
mIntent.putExtra("iis",new MyClass());
和你的班级
private class MyClass implements Serializable{
}
到达另一端
MyClass mc=(MyClass) getIntent().getExtras().getSerializable("iis");
更新
您也可以将数据作为 Parcelable 对象发送。但要记住
如果您通过意图将非原始类型数据/对象发送到另一个活动,则您必须为该对象序列化或实现 Parcelable。首选技术是 Parcelable,因为它doesn't impact the performance
你的班:
public class myClassObject implements Serializable {
public myClassObject(){
}
}
意图传递:
Intent intent = new Intent(MainActivity.this,NextActivity.class);
intent.putExtra("question_data", qData);
intent.putExtra("answer_string", answer);
startActivity(intent);
一种选择是让您的类实现 Serializable 接口,然后您可以使用 Intent#putExtra() 方法的 putExtra(Serializable..) 变体以额外的意图传递对象实例。
Passing :
intent.putExtra("MyClassObject", obj);
To retrive
getIntent().getSerializableExtra("MyClassObject");