在OS重启后调用onActivityResult()之前是否重新创建了活动视图?

时间:2018-06-03 04:34:10

标签: android android-activity android-lifecycle onactivityresult activity-lifecycle

我们说我有活动A.我使用startActivityForResult()从活动A开始活动B,并且无论何时完成,都会在活动B中调用setResult()函数,从而导致活动&# 39; s a onActivityResult()被调用。

但是,如果我在活动B中,Android操作系统会杀死应用程序并重新启动它。当应用程序恢复时,我回到活动B,然后我选择通过调用setResult()返回活动A.所以我的问题是,在调用onActivityResult()之前,是否重新创建了Activity A的视图(onCreate()调用)?在这种情况下,活动A的onActivityResult()甚至被称为?

感谢阅读。

1 个答案:

答案 0 :(得分:1)

  

所以我的问题是,是否重新创建了活动A的视图(onCreate()被调用)   在调用onActivityResult()之前?在这种情况下,是   活动A的onActivityResult()甚至被称为?

是。如果操作系统已杀死您的应用程序并且活动B已完成,则操作系统知道重新创建活动A并将结果传递给onActivityResult(),就像活动A根本没有死亡一样。

注意:

  • 只有当您的两个活动都处于不同的过程中时,才有可能。当内存压力不足时,OS永远不会直接杀死活动。它只会杀死托管活动的整个过程。如果您的两个活动都在同一个流程中托管,那么您的方案就不应该发生。
  • 任何回调类实例,成员变量甚至静态变量都会与活动A一起销毁,因为整个过程都被终止。您必须在活动A中重新创建它们。