Android:将对象从一个活动发送到另一个活动

时间:2012-08-07 09:59:22

标签: android serialization android-intent parcelable

要将任意对象从一个活动发送到另一个活动,我们可以使用Parcelable Interface或Serializable Interface。两个有什么区别?哪一个更适合使用?

此外,我们可以在不使用所有这个接口的情况下发送字符串,整数类型的对象。怎么可能?

4 个答案:

答案 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);