代码之家  ›  专栏  ›  技术社区  ›  RichyDavisWindow3

是否在操作系统重新启动后调用活动的onActivityResult()之前重新创建该活动的视图?

  •  1
  • RichyDavisWindow3  · 技术社区  · 7 年前

    假设我有activity a,我使用startActivityForresult()从activity a启动activity b,完成后,在activity b中调用setResult()函数,从而调用activity a onActivityResult()。

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

    谢谢你的阅读。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Sagar    7 年前

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

    对。如果操作系统已经终止了应用程序的进程,并且活动b已经完成,那么操作系统知道重新创建活动a并将结果传递给onActivityResult(),就像活动a根本没有终止一样。

    注:

    • 只有当您的两个活动都处于不同的过程中时,这才是可能的。操作系统在内存压力下不会直接杀死活动。它只会终止承载活动的整个过程。如果您的两个活动都托管在同一个进程中,那么您的场景就不应该发生。
    • 任何回调类实例、成员变量,甚至静态变量都会随活动A一起被销毁,因为整个过程都会被终止。您必须在活动A中重新创建它们。