Android活动生命周期:新活动开始时的状态顺序

Android活动生命周期:新活动开始时的状态顺序,android,android-activity,lifecycle,Android,Android Activity,Lifecycle,如果我通过以下方式从Activity1启动Activity2:startActivity(Activity2)首先执行什么:onStop()(活动1)或onStart()(活动2) 它们是同时工作还是轮流工作?如果一个接一个,首先是什么 所以一般来说:当第一个活动第二次启动时,活动的状态顺序是什么?如果存在此顺序?使用日志将日志发布到Logcat Log.v("STATE", "Pause...and so on"); 关键是理解活动是如何开始的。在startActivity()方法中发布意图

如果我通过以下方式从Activity1启动Activity2:
startActivity(Activity2)首先执行什么:
onStop()
(活动1)或
onStart()
(活动2)

它们是同时工作还是轮流工作?如果一个接一个,首先是什么


所以一般来说:当第一个活动第二次启动时,活动的状态顺序是什么?如果存在此顺序?

使用日志将日志发布到Logcat

Log.v("STATE", "Pause...and so on");

关键是理解活动是如何开始的。在startActivity()方法中发布意图时,您只需要求系统启动此活动。下一个系统尝试启动Activity2并向Activity1发送消息。顺序是不确定的,在不同的情况下可能会有所不同

看起来我的回答是错误的,因为这两个活动都在同一个流程(应用程序)中工作
正如丹尼尔·波波夫所指出的那样:(协调活动部分)

当我们从第一个活动导航到第二个活动时 调用onPause()方法,后跟onStop(),然后调用第二个活动的onCreate()方法,后跟onStart()和onResume()

当按back键导航回firstactivity时也是如此


调用第二个活动的onPause()方法,后跟onStop(),然后调用第一个活动的onRestart()方法,后跟onStart(),然后再调用onResume()。

根据文档,在Activity1的onStop()之前调用Activity2的onStart()(或者,如果您愿意,操作系统会在Activity1上调用onStop之前等待Activity2上的onStart完成)

发件人:


生命周期回调的顺序定义得很好,特别是当两个活动处于同一个流程中且一个正在启动另一个时。以下是活动A启动活动B时发生的操作顺序:

执行活动A的onPause()方法。 活动B的onCreate()、onStart()和onResume()方法按顺序执行。(活动B现在以用户为中心。) 然后,若活动A在屏幕上不再可见,则执行其onStop()方法


假设ActivityA通过调用StartActivity(Intent)方法启动Activity B,那么生命周期调用如下:-

  • 一个onCreate()
  • A onStart()
  • 简历
现在点击按钮可获得startActivity(意向)

  • 暂停

  • B onCreate()

  • B onStart()

  • B.简历()


…如果您在活动B中按下后退按钮,则生命周期调用将是…

  • B暂停()

  • 一个onRestart()

  • A onStart()

  • 简历

  • B顶部()
  • B.故事()
现在还有一个场景“从活动A开始,通过在按钮上调用StartActivity(Intent)启动活动B,并在活动B的onstart()方法中使用finish()方法”

  • 暂停

  • B onCreate()

  • B onStart()

  • 简历

  • B顶部()

  • B.故事()


生命周期回调的顺序定义得很好,特别是当两个活动处于同一个流程中且一个正在启动另一个时。以下是活动A启动活动B时发生的操作顺序:


活动A的onPause()方法执行。活动B的onCreate()、onStart()和onResume()方法按顺序执行。(活动B现在具有用户焦点。)然后,如果活动A在屏幕上不再可见,则其onStop()方法执行。

假设活动
A
通过调用StartActivity(Intent)启动活动
B
方法,然后生命周期调用如下:-

  • A
    onCreate()
    A
    onStart()
    A onResume()
现在点击按钮查看
startActivity(intent)

  • A
    onPause()
    B
    onCreate()
    B
    onStart()
    B
    onResume()
    A onStop()


如果您在活动
B
中按下后退按钮,则生命周期调用将

  • B
    onPause()
    A
    onRestart()
    A
    onStart()
    A
    onResume(),
    B
    onStop(),
    B
    onDestory()


现在还有一个场景“从活动
A
启动活动
B
,方法是调用
StartActivity(Intent)
上的按钮,单击并使用
finish()
内的
onstart()
方法启动活动
B

  • A
    onPause()
    B
    onCreate()
    B
    onStart()
    A
    onResume()
    B
    onStop(),
    B
    onDestory()

以下是活动A启动活动B时发生的操作顺序:

执行活动A的onPause()方法

活动B的onCreate()、onStart()和onResume()方法按顺序执行。(活动B现在以用户为中心。)

然后,若活动A在屏幕上不再可见,则执行其onStop()方法


当我通过编程方式检查它时,它遵循了以下所有步骤且易于理解

只需覆盖activity1中的onStop()和activity2中的onStart(),然后进行一些日志记录,看看哪个日志记录最先出现。我只是在我的应用程序中添加了一些日志记录代码,我看到了不同的画面:1)activity1 onPause()2)活动2启动3)活动2恢复()4)活动1启动()。顺序已确定-Android开发者网站已更新,
协调活动
部分位于活动A的假设中,您可以进行追溯