可以在调用onActivityResult之前终止父Activity

时间:2015-07-05 18:03:16

标签: android

在调用onActivityResult()之前是否可以终止父活动?如果是这种情况,那么在父活动中维护的任何局部变量在调用onActivityResult()时可能无效(初始化)。

当为最初在父活动中设置的某些变量调用onActivityResult()时,我会定期获取空指针异常,但如果父活动在从子活动返回之前已被销毁,则这些变量将不再有效

1 个答案:

答案 0 :(得分:3)

  

在调用onActivityResult()之前是否可以终止父活动?

活动未被“终止”。活动被摧毁。流程终止。

如果通过startActivityForResult()启动的活动与您的应用程序位于不同的应用中,则您的应用完全可能会在您的应用处于后台时终止。例如,您可以通过ACTION_IMAGE_CAPTURE看到很多内容。

此外,配置更改可能会破坏您的活动,因为它会回到前台。假设您以纵向模式开始。你启动了另一个活动。用户将设备旋转为横向,然后按BACK。您的“父活动”将被销毁并重新创建。

但是,否则,“父活动”应该被销毁的唯一方法就是你在上面调用finish()

  

当为最初在父活动中设置的某些变量调用onActivityResult()时,我会定期获取空指针异常,但如果父活动在从子活动返回之前已被销毁,则这些变量将不再有效

您需要重新填充这些变量,例如将其值保存在onSaveInstanceState() Bundle中并在onRestoreInstanceState()中恢复它们。这将处理流程已终止的方案(假设用户合理地快速返回给您)和配置更改方案。