StartActivityForResult()可能崩溃?

时间:2011-08-20 01:08:40

标签: android android-activity garbage-collection android-intent

我有一个简单的问题我希望其他人快速回答:如果你开始活动[A]然后用startActivityForResult()开始活动[B],那么[B]是否有可能完成并返回一个值(意图),[A]可能已经GC了,因此一切都崩溃了?

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

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

但是,如果可能的话,你不能在[B]中使用[A]中的一些静态参考,从而制作硬参考,而不允许使用GC? < / p>

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

如果A已被销毁,则会重新创建。来自Android开发指南中的Activity documentation

  

protected void onActivityResult (int requestCode,int resultCode,Intent data)

     

[..]   当您的活动重新开始时,您将在onResume()之前立即收到此电话

这意味着将正常重新创建活动A(执行onCreate(),onStart(),然后执行onActivityResult(),如Activity lifecycle中所述),将传递您在活动B中设置的结果Intent。 / p>