Android意图创建对象的新实例

时间:2013-06-21 17:12:36

标签: java android android-intent serializable

我正在使用从活动A到活动B的Intent传递一个Serializable对象,但是当我在将对象放入A中的intent并在B中检索它之后打印object.toString()方法时,我看到了它们实际上是不同的实例。

这是问题所在。我在不同的类和不同的线程中初始化了该对象的字段,当我将对象放入Activity A中的intent时,这些字段还没有准备好,但是当我检索它们时它们就准备好了。但是,当我尝试在Activity B中检索这些字段时,我发现它们是空的,因为检索到的对象是一个新实例。

我该如何解决这个问题?我不知道如何让主线程等到对象初始化任务结束(已经尝试过thread.join())。我基本上只需要将两个ArrayLists从一个活动发送到另一个活动,除非我发送它们(即将它们置于意图中)它们是空的,但是当它们被检索时它们已被填充。

1 个答案:

答案 0 :(得分:0)

序列化对象时,它会被翻译成一个表格,以后可用于创建原始对象的语义相同的克隆。这当然是原始对象的不同实例。

我可以想到两种情况:

  • 您的活动B可以在没有您尝试通过Intent发送的信息的情况下运行。在这种情况下,活动B可以注册BroadcastReceiver,您的线程一旦完成,将通过LocalBroadcastManager
  • 广播数据
  • 您的活动B无法在没有该数据的情况下运行,而活动A运行生成该数据的代码,例如在AsyncTask中,并在任务完成后启动活动B(将在onPostExecute()方法中)。