Activity 生命周期回调是否可以相互中断或同时发生?

问题描述

Activity 生命周期回调如 onCreate()、onStart()、onResume(),总是等待前者完成后再执行,或者 onStart() 是否有可能在 onCreate() 完成之前被调用,中断它,然后然后 onCreate 在 onStart() 完成后继续。它们是否有可能同时运行,比如 onStart() 在 onCreate() 还没有完成时被调用,然后一行 onStart() 执行,然后一行 onCreate(),等等。>

我认为情况并非如此,登录我的应用程序显示并非如此,但我从未见过明确提及它,因为我不知道它在其他版本或设备上的情况。我还看到每个应用程序认都有一个线程,所以我认为这意味着它不能并发,但我想确定一下。

让我想到这一点的主要原因是网上有些人说在 Activity 中 onCreateOptionsMenu() 在 onCreate() 开始之后但在它完成之前被调用。例如第一个答案 here。但是另一位用户在其他地方说,在某些版本中,在 setContentView() 中调用了 onCreateOptionsMenu(),我想这就是原因所在。那么它会像这样吗?

onCreate() -> onCreateOptionsMenu() 调用,onCreate() 暂停 -> onCreateOptionsMenu() 完成 -> onCreate() 恢复

我做对了吗?不涉及并发?

对于像 onCreate()、onStart()、onResume() 这样的主要回调,这样的事情不会发生?

解决方法

您引用了关于 onCreateOptionsMenu() 时间的非常古老的问题/答案,这些非常古老的帖子指的是 ActionBarSherlock,它是一个不属于 Android 框架的库(并且可能没有遵循我在下面描述的规则)。

据我所知,对 ActivityFragment 上的框架方法的所有调用(除非另有特别说明)都是在主 (UI) 线程上进行的。这意味着它们不能被任何其他框架调用中断,它们运行到完成并且它们不能并行运行。我个人的经验分析同意这一点。