Android --- startActivity或startActivityForResult将如何影响当前活动的逻辑流程?

use*_*812 4 android android-activity

我正在研究一个开源的Android项目时遇到这个问题.

我有一个活动A1,它在"onCreate"方法中调用另一个活动A2.但是,在"startActivity/startActivityForResult"方法之前和之后都有代码语句.我不知道"startActivity/startActivityForResult"方法后A1中的执行顺序.

A1的代码框架如下:

public void onCreate(Bundle bundle) {
   <code statements before>
   this.startActivityForResult(.....);  // Start A2 here.
   <code statements after>
}

public void onResume() {
   <code statements>
}

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
   <code statements>
}
.....
Run Code Online (Sandbox Code Playgroud)

我想知道A1是否会首先完成其执行周期(即"onCreate" - >"onStart" - >"onResume" - >"onPause" - >"onStop")才能调用A2,或者只是先完成"onCreate"之前调用A2,还是有其他执行逻辑?

此外,当A2返回(完成)并调用A1中的"onActivityResult"时,A1会在执行"onActivityResult"方法后执行"onRestart" - >"onStart" - >"onResume"吗?

因为A1和A2都有自己的UI,我认为2个活动可能无法与两个不同的线程同时执行.有没有人知道这种情况下的确切执行顺序?

提前感谢任何建议.

use*_*812 12

我使用2个非常简单的Android活动模拟了这种情况,并得到了以下结果.

以下是Android在活动A1的方法中执行"startActivity"/"startActivityForResult"以启动另一个活动A2时会发生的情况,

  1. 它会认识到现在有意发起另一项活动A2,
  2. 它将执行到当前方法的结尾(它不会直接跳转到有意的活动A2),
  3. 然后它将调用当前活动A1的"onPause"方法(以允许我们保存当前状态),然后保留当前活动,
  4. 它现在将启动意图活动A2并调用其"onCreate" - >"onStart" - >"onResume"方法序列,
  5. 如果被调用的活动A2覆盖整个屏幕,则可以在这里调用初始调用活动A1的"onStop"方法,
  6. 如果被调用的活动A2是"singleTask"活动并且A1位于堆栈中的A2之上,则可以在此调用初始调用活动A1的"onDestroy"方法(在"singleTask"活动之上的所有活动都将被销毁)当"singleTask"活动被带到前面时).

我在这里写下来希望它可能对其他人有所帮助.