Android P onStart 在 onActivityResult 之前调用

Posted

技术标签:

【中文标题】Android P onStart 在 onActivityResult 之前调用【英文标题】:Android P onStart called before onActivityResult 【发布时间】:2018-11-01 04:59:27 【问题描述】:

我正在试用新的android P Developer Preview,具体情况如下:

    我用 startActivityForResultActivity A 调用 Activity BSetResult 结束 Activity B 并返回到 Activity A,Activity 的生命周期曾经是(在 Android P Preview 之前) :
      onActivityResult onStart onResume

(这里还有一个确认此订单的帖子Execution order of OnActivityResult and OnResume)来自rndstr的回答

    现在在测试 Android P 预览版时,Activity 生命周期是:

      onStart onActivityResult onResume

Android 文档https://developer.android.com/reference/android/app/Activity#onactivityresult 只有onActivityresult 应该在 onResume 之前,它没有说明 onStart

有人可以帮忙吗?这是 Android P Preview 中的错误还是新行为?有这方面的好文档吗?

我正在使用 targetSDK:23

Activity A 是:SingleTask,Activity B 是:SingleTop

【问题讨论】:

【参考方案1】:

听起来你已经回答了自己的问题!

文档说只有会调用onActivityResult()onResume() 之前,它没有提到onStart()

onStart()onStop() 仅在您的 Activity 不可见时才被调用。这意味着如果您启动另一个Activity 并且Activity 没有完全覆盖屏幕,那么您的Activity 无论如何都不会收到onStop()onRestart()onStart() 调用。因此,您不应依赖它们,也不应依赖它们被调用的顺序。

【讨论】:

以上是关于Android P onStart 在 onActivityResult 之前调用的主要内容,如果未能解决你的问题,请参考以下文章

Android:在活动中 onStart()、onStop()、onDestroy() 的开头或结尾调用 super()?

在某些 Android 设备上获取 nullPointerException onStart() 方法

com.google.android.youtube.player.YouTubePlayerSupportFragment.onStart 处的 NullPointerException(未知来源)

android IntentService生命周期问题

鸿蒙OS基础,Ability的生命周期

Android Activity 生命周期中onStart()和onResume()的区别