【发布时间】:2021-05-19 17:19:02
【问题描述】:
像 onCreate()、onStart()、onResume() 这样的 Activity 生命周期回调,总是在执行之前等待前者完成,或者是否有可能在 onCreate() 完成之前调用 onStart(),中断它,并且然后 onCreate 在 onStart() 完成后继续。它们是否有可能同时运行,比如 onStart() 是否可以在 onCreate() 尚未完成时被调用,然后执行一行 onStart(),然后执行一行 onCreate(),等等。
我认为情况并非如此,登录我的应用程序显示事实并非如此,但我从未见过明确提及它,因为我不知道它在其他版本或设备上的情况。我还读到每个应用程序默认都有一个线程,所以我认为这意味着它不能并发,但我想确定一下。
让我想到这一点的主要事情是,有些人在网上说,在 onCreateOptionsMenu() 活动中,onCreateOptionsMenu() 是在 onCreate() 启动之后但在它完成之前调用的。例如第一个答案here。但是另一位用户在其他地方说,在某些版本上,在 setContentView() 中调用了 onCreateOptionsMenu(),我猜这就是原因。那么它会变成这样吗?
onCreate() -> onCreateOptionsMenu() 调用,onCreate() 暂停 -> onCreateOptionsMenu() 完成 -> onCreate() 恢复
我做对了吗?不涉及并发?
像 onCreate()、onStart()、onResume() 这样的主要回调不会发生这样的事情吗?
【问题讨论】:
-
它们都按顺序在主应用线程上执行。
onCreateOptionsMenu不是您链接的问题中提到的与生命周期相关的方法,它与显示/打开的菜单有关。 -
@Pawel,感谢您的回答,那么 onStart() 只会在 onCreate() 完成后调用吗?
-
是的,
onStart()只会在onCreate()完成后被调用。 -
@DavidWasser 感谢您的澄清,这里的第一个答案让我感到困惑stackoverflow.com/questions/58899219/…。措辞让我质疑它。我想这是因为他在其中进行了异步调用。
标签: android android-activity activity-lifecycle