我有一个简单的问题,我希望其他人能快速回答:如果您启动 Activity [A],然后使用 startActivityForResult() 启动 Activity [B],是否有可能当 [B]完成并返回一个值( Intent ),[A] 可能已经被 GC,因此一切都崩溃了?
我在某处读到这可能会发生,因此您不应该使用 Intent.putExtras() 传回重要信息,因为它可能会丢失?相反,人们建议在 sharedPreferences 中保存状态并在从 [A] 到 [B] 时简单地使用 startActivity() ,然后在从 [B] 返回到 [A] 时再次使用?
因此,我真的很想避免重新编码我正在进行的项目,但如果这可能成为一个问题,我显然希望在发布之前解决它。
但是,如果这可能的话,难道您不能只从 [A] 中放置一些您在 [B] 中使用的静态引用,从而形成硬引用,并且不允许 GC 吗?
感谢大家的帮助!
最佳答案
如果 A 已被销毁,它将被重新创建。来自Activity documentation在 Android 开发指南中:
protected void onActivityResult (int requestCode, int resultCode, Intent data)
[..] You will receive this call immediately before onResume() when your activity is re-starting.
这意味着 Activity A 将正常重新创建(执行 onCreate()、onStart() 和 onActivityResult(),如 Activity lifecycle 中所述)并且您在 Activity B 中设置的结果 Intent 将被传递。
关于android - StartActivityForResult() 可能崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7128883/