要将任何对象的意图从一个活动发送到另一个活动,我们可以使用 Parcelable 接口或 Serializable 接口。两者有什么区别?哪个更适合使用?
此外,我们可以发送字符串、整数类型的对象,而无需使用所有这些接口。怎么可能?
要将任何对象的意图从一个活动发送到另一个活动,我们可以使用 Parcelable 接口或 Serializable 接口。两者有什么区别?哪个更适合使用?
此外,我们可以发送字符串、整数类型的对象,而无需使用所有这些接口。怎么可能?
Java Serializable: Serializable 来自标准 Java,实现起来要容易得多,您需要做的就是实现 Serializable 接口并添加覆盖两个方法。
private void writeObject(java.io.ObjectOutputStream out)
throws IOException
private void readObject(java.io.ObjectInputStream in)
throws IOException, ClassNotFoundException
Serializable 的问题在于它试图适当地处理阳光下的一切,并使用大量反射来确定正在序列化的类型。所以它变成了一个强壮的对象
Androids Parcelable: Android 进程间通信 (AIPC) 文件,用于告诉 Android 应该如何编组和解组您的对象。它不那么通用,不使用反射,因此它应该有更少的开销和更快的速度。
您可以发送 String、Integer 等数据类型,以及实现 Parcelable 接口的类的对象,如下所示...
Intent intent = new Intent(CallingActivity.this, CalledActivity.class);
intent.putExtra("IntegerExtra", intValue);
intent.putExtra("StringExtra", stringValue);
intent.putExtra("ParcExtra", parcObject);
startActivity(intent);
而且,在接收端,您可以编写以下代码,
intValue = getIntent().getIntExtra("IntegerExtra", 0);
stringValue = getIntent().getStringExtra("StringExtra");
parcObject = ((YourParcalabeDataType) getIntent().getParcelableExtra("ParcExtra"));
希望这可以解决您的问题... :)
与发送对象相比,仅发送指向您的内容的 URI 可能更容易。这将简化发送并消除发送对象的需要,因为理想情况下 URI 将指向您感兴趣的内容。当然这取决于您尝试传递的内容。
您可以从该链接找到 Parcelable 和 Serializable 接口之间的区别。基本上 Parcelable 是为 android 创建的,比 Serializable 效率高得多。
您可以通过使用 Bundles 并将这些包链接到意图来简单地发送字符串或整数。
Intent i = new Intent(getApplicationContext(),YourClass.class);
Bundle b = new Bundle();
b.putString("string", "string");
i.putExtras(b);
startActivity(i);