2

我有一个快速的问题,我希望别人有一个快速的答案:如果你开始活动[A],然后用startActivityForResult()开始活动[B],是否有机会当[B]完成并返回一个值(意图),[A]可能是GC'd,因此一切崩溃?StartActivityForResult()可能崩溃?

我在某处读过这可能会发生,因此您不应该使用Intent.putExtras()传回重要信息,因为它可能会丢失?相反,人们建议将状态保存在sharedPreferences中,当从[A]到[B]时再使用startActivity(),然后再从[B]返回到[A]时再使用startActivity()?

我真的想避免因为这个而重新编码我正在进行的项目,但是如果这可能是一个问题,我显然希望在发布之前照顾它。

但是,如果这是可能的,你不能只是从[A]中放置一些你在[B]中使用的静态引用,从而做出一个硬引用,而不允许GC?

感谢您的帮助!

+0

哇,这真是一个非常神秘的话题。我不会假装我知道Dalvik/Java中的垃圾收集的任何事情,但我的意思是我不会指望Android系统是那种马虎。除非你在内存管理方面做些棘手的事情。 –

+0

@丹尼尔..我想这不会,但我也想确定。我从来没有碰到过这个,我只是读了一下,并且很好奇,所以想问问周围。感谢您的回复。 –

回答

3

如果A已被销毁,它将被重新创建。从Android开发者指南中Activity documentation

保护无效onActivityResult(INT requestCode,INT resultCode为,意图数据)

[..] 您会立即之前的onResume收到此()调用当你的活动重新开始时

这意味着活动A将被重新创建正常(执行的onCreate(),在onStart(),然后onActivityResult(),如在Activity lifecycle所述)和你在活动B设置结果意图将被传递。

+0

谢谢。这是我正在寻找的信息!非常感激。 –