是否在操作系统重启后调用 onActivityResult() 之前重新创建了活动的视图?
Posted
技术标签:
【中文标题】是否在操作系统重启后调用 onActivityResult() 之前重新创建了活动的视图?【英文标题】:Is the activity's view recreated before its onActivityResult() called after an OS restart? 【发布时间】:2018-11-12 18:30:06 【问题描述】:假设我有 Activity A。我使用 startActivityForResult() 从 Activity A 启动 Activity B,一旦完成,就会在 Activity B 中调用 setResult() 函数,从而调用 Activity A 的 onActivityResult()。
但是,如果我在 Activity B 中时,android 操作系统会终止该应用程序并重新启动它。当应用程序恢复后,我回到了 Activity B,然后我选择通过调用 setResult() 返回到 Activity A。所以我的问题是,在调用它的 onActivityResult() 之前,Activity A 的视图是否被重新创建(onCreate() 调用)?在这种情况下,Activity A 的 onActivityResult() 是否会被调用?
感谢阅读。
【问题讨论】:
是的,首先调用onCreate()
,然后调用onActivityResult()
@pskink 谢谢!
【参考方案1】:
所以我的问题是,是否重新创建了活动 A 的视图(调用了 onCreate()) 在调用它的 onActivityResult() 之前?在这种情况下,是 Activity A 的 onActivityResult() 竟然被调用了?
是的。如果操作系统杀死了您的应用程序的进程并且 Activity B 已完成,则操作系统知道重新创建 Activity A 并将结果传递给 onActivityResult(),就像 Activity A 根本没有死亡一样。
注意:
这只有在您的两个活动都在不同的进程中时才有可能。操作系统在内存压力下从不直接杀死活动。它只是杀死了托管活动的整个进程。如果您的两个活动都托管在同一进程中,那么您的情况就不应该发生。 任何回调类实例、成员变量,甚至静态变量都会随着 Activity A 一起被销毁,因为整个进程都被杀死了。您必须在 Activity A 中重新创建它们。【讨论】:
有用且详细的答案。谢谢!以上是关于是否在操作系统重启后调用 onActivityResult() 之前重新创建了活动的视图?的主要内容,如果未能解决你的问题,请参考以下文章