假设我有 Activity A。我使用 startActivityForResult() 从 Activity A 启动 Activity B,无论何时完成,都会在 Activity B 中调用 setResult() 函数,从而调用 Activity 的 onActivityResult()。
但是如果当我在 Activity B 中时,android 操作系统终止了应用程序并重新启动它会怎样。当应用程序恢复时,我回到 Activity B,然后我选择通过调用 setResult() 返回 Activity A。所以我的问题是,在调用 onActivityResult() 之前是否重新创建了 Activity A 的 View (调用了 onCreate())?在这种情况下,Activity A 的 onActivityResult() 是否被调用?
感谢阅读。
最佳答案
So my question is, is Activity A's view recreated(onCreate() called) before its onActivityResult() is called? In such a scenario, is Activity A's onActivityResult() even called?
是的。如果操作系统终止了您的应用进程并且 Activity B 已完成,则操作系统知道重新创建 Activity A 并将结果传递给 onActivityResult(),就好像 Activity A 根本没有终止一样。
注意:
- 这只有在您的两个 Activity 处于不同流程中时才有可能。操作系统在内存压力下从不直接终止 Activity 。它只是终止了托管该 Activity 的整个进程。如果您的两个 Activity 都托管在同一个进程中,那么您的场景就不会发生。
- 任何回调类实例、成员变量,甚至静态变量都与 Activity A 一起销毁,因为整个进程都被终止了。您必须在 Activity A 中重新创建它们。
关于android - 在操作系统重启后调用 onActivityResult() 之前是否重新创建了 Activity 的 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50663333/