gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:41:40 24 4
gpt4 key购买 nike

在研究一个开源的Android项目时,我有这个疑问。

我有一个 Activity A1,它在其“onCreate”方法中调用另一个 Activity 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>
}
.....

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

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

因为A1和A2都有自己的UI,我觉得2个activity可能不会用两个不同的线程同时执行。在这种情况下,有人知道确切的执行顺序吗?

提前感谢您的任何建议。

最佳答案

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

以下是当Android在一个activity A1的方法中执行“startActivity”/“startActivityForResult”以启动另一个activity A2时会发生什么,

  1. 它会认识到现在有启动另一个 Activity A2 的 Intent ,
  2. 它将执行到当前方法的末尾(它不会直接跳转到预期 Activity A2),
  3. 然后它会调用当前 Activity A1 的“onPause”方法(以允许我们保存当前状态)然后离开当前 Activity ,
  4. 它现在将启动预期 Activity A2 并调用其“onCreate”->“onStart”->“onResume”方法序列,
  5. 如果调用的 Activity A2 已经覆盖了整个屏幕,则可以在此处调用初始调用 Activity A1 的“onStop”方法,
  6. 如果被调用的 Activity A2 是一个“singleTask” Activity 并且 A1 在堆栈中位于 A2 之上(所有 Activity 都在“singleTask” Activity 之上),则可以在此处调用初始调用 Activity A1 的“onDestroy”方法当“singleTask” Activity 被带到前面时将被销毁)。

写在这里希望对大家有帮助。

关于Android --- startActivity 或 startActivityForResult 将如何影响当前 Activity 的逻辑流程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10560689/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com