在调用onActivityResult()之前是否可以终止父活动?如果是这种情况,那么在父活动中维护的任何局部变量在调用onActivityResult()时可能无效(初始化)。
当为最初在父活动中设置的某些变量调用onActivityResult()时,我会定期获取空指针异常,但如果父活动在从子活动返回之前已被销毁,则这些变量将不再有效
答案 0 :(得分:3)
在调用onActivityResult()之前是否可以终止父活动?
活动未被“终止”。活动被摧毁。流程终止。
如果通过startActivityForResult()
启动的活动与您的应用程序位于不同的应用中,则您的应用完全可能会在您的应用处于后台时终止。例如,您可以通过ACTION_IMAGE_CAPTURE
看到很多内容。
此外,配置更改可能会破坏您的活动,因为它会回到前台。假设您以纵向模式开始。你启动了另一个活动。用户将设备旋转为横向,然后按BACK。您的“父活动”将被销毁并重新创建。
但是,否则,“父活动”应该被销毁的唯一方法就是你在上面调用finish()
。
当为最初在父活动中设置的某些变量调用onActivityResult()时,我会定期获取空指针异常,但如果父活动在从子活动返回之前已被销毁,则这些变量将不再有效
您需要重新填充这些变量,例如将其值保存在onSaveInstanceState()
Bundle
中并在onRestoreInstanceState()
中恢复它们。这将处理流程已终止的方案(假设用户合理地快速返回给您)和配置更改方案。