[英]Can onActivityResult() be called before onCreate()?
理论上可以在onCreate
() 之前调用onActivityResult()
吗? 我知道它可以在onResume()
之前调用,但让我们考虑一下这种极端情况:
现在会发生什么? 活动 A 是在收到结果之前重新创建,还是在onCreate()
之前收到结果? 这是否保证每次都以相同的顺序排列?
如果您打开应用程序扫描条形码或拍摄照片或视频,您通常会看到这一点。 您为此启动的Activity
需要大量资源,因此 Android 会杀死托管您的应用程序的操作系统进程。
当您启动的Activity
想要将结果返回给您的应用程序时,会发生以下情况:
Application
实例(或您的应用程序的自定义实例)并在其上调用onCreate()
Activity
实例,它将获得结果(调用startActivityForResult()
的那个)Activity
上调用onCreate()
。 在这种情况下,传递给onCreate()
的Bundle
是最近用于保存Activity
实例 state 的Bundle
(来自onSaveInstanceState()
)。Activity
上调用onStart()
Activity
上调用onActivityResult()
Activity
上调用onResume()
那些案例使用
registerForActivityResult()
活动结果 API 将结果回调与代码中您启动其他活动的位置分离。 由于重新创建流程和活动时结果回调需要可用,因此每次创建活动时都必须无条件注册回调,即使启动其他活动的逻辑仅基于用户输入或其他业务逻辑发生
更多详细信息请参阅从活动中获取结果
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.