如果重新创建活动,是不是会调用 onNewIntent 或 onActivityResult?

Posted

技术标签:

【中文标题】如果重新创建活动,是不是会调用 onNewIntent 或 onActivityResult?【英文标题】:Does onNewIntent or onActivityResult get called if the activity is recreated?如果重新创建活动,是否会调用 onNewIntent 或 onActivityResult? 【发布时间】:2019-10-30 04:03:11 【问题描述】:

我的活动 A 在另一个应用程序中启动了一个活动 B,用户可以在该活动上花费相当长的时间。在此期间,android 可能会破坏我的活动 A(也许是为了回收内存),我想知道:

    如果A以startActivityForResult开头B,B调用setResult返回A,如果A需要重新创建,是否会在A的onCreate之后调用onActivityResult? 如果 A 以 startActivity 开头 B,并且 B 通过使用标志 FLAG_ACTIVITY_SINGLE_TOP 调用 startActivity 返回 A,如果 A 还活着,则应调用 onNewIntent。但是如果A被销毁,onNewIntent会在onCreate之后被调用吗?

我已阅读有关 SO 上的 android 活动生命周期帖子,但对此不确定。对此进行实验并不容易。

【问题讨论】:

在您的设备上,在“设置”>“系统”>“开发人员选项”下,打开“不保留活动”选项。这将在您离开活动后立即终止活动,模拟系统将其杀死以回收内存。然后您可以进行实验,看看会发生什么。 【参考方案1】:

1) 会的,但是生命周期调用的顺序可能与您预期的有所不同。为这种可能性做好准备。

【讨论】:

以上是关于如果重新创建活动,是不是会调用 onNewIntent 或 onActivityResult?的主要内容,如果未能解决你的问题,请参考以下文章

OnNewIntent 未调用,而是打开了新的活动实例

Android onNewIntent调用时机

Android 深入探讨sigleTask和singletop的区别

onNewIntent() 生命周期和注册的监听器

onNewIntent使用-Android

OnNewIntent() 在推送通知中被多次调用