要将任意对象从一个活动发送到另一个活动,我们可以使用Parcelable Interface或Serializable Interface。两个有什么区别?哪一个更适合使用?
此外,我们可以在不使用所有这个接口的情况下发送字符串,整数类型的对象。怎么可能?
答案 0 :(得分:3)
Java Serializable: Serializable来自标准Java,并且更容易实现您需要做的就是实现Serializable接口并添加override两种方法。
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如何编组和解组你的对象。它不太通用,不使用反射,所以它应该有更少的开销,并且要快得多。
答案 1 :(得分:2)
您可以发送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"));
希望这可以解决你的问题...... :)
答案 2 :(得分:0)
发送对象的Intead,发送指向您内容的URI可能更容易。这样可以简化发送过程,并且不需要发送对象,因为URI理想地指向您感兴趣的内容。当然这取决于您尝试传递的内容。
答案 3 :(得分:0)
您可以从link 找到Parcelable和Serializable Interface之间的区别。 基本上Parcelable是为Android创建的,并且比Serializable更有效。
您可以使用Bundles简单地发送字符串或整数,并将这些包链接到意图。
Intent i = new Intent(getApplicationContext(),YourClass.class);
Bundle b = new Bundle();
b.putString("string", "string");
i.putExtras(b);
startActivity(i);