Android活动生命周期:新活动开始时的州订单

时间:2012-04-01 09:38:02

标签: android android-activity lifecycle

如果我通过这种方式从Activity1启动Activity2:startActivity(Activity2);首先执行的是什么:onStop()(Activity1)还是onStart()(Activity2)?

他们是同时还是轮流工作?如果一个接一个,什么是第一个?

一般来说:如果这个订单存在,第一个活动开始时第二个活动的状态顺序是什么?

9 个答案:

答案 0 :(得分:12)

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

  • 一个onCreate()
  • onStart()
  • 一个onResume()

现在按住clickActivity(意图)按钮

  • onPause()

  • B onCreate()

  • B onStart()

  • B onResume()

  • onStop()

.....如果你按下活动B的后退按钮,那么lifeCycle会是.....

  • B onPause()

  • onRestart()

  • onStart()

  • onResume()

  • B onStop()
  • B onDestory()

现在还有一个场景"来自Activity A通过在按钮点击时调用StartActivity(Intent)启动Activity B,并在Activity B"上的onstart()方法中使用finish()方法;

  • onPause()

  • B onCreate()

  • B onStart()

  • onResume()

  • B onStop()

  • B onDestory()

答案 1 :(得分:10)

根据文档,Activity2上的onStart在Activity1上的onStop之前调用(或者,如果你愿意,os在Activity2上调用OnStop之前等待Activity2上的onStart完成)。

来自http://developer.android.com/guide/topics/fundamentals/activities.html

  

生命周期回调的顺序是明确定义的,特别是当两个活动在同一个进程中而另一个正在启动另一个时。以下是活动A启动活动B时发生的操作顺序:

     

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

答案 2 :(得分:3)

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

当两个活动在同一个过程(app)中运行时,看起来我的anwer错误了 正如Daniil Popov指出:https://developer.android.com/guide/components/activities/activity-lifecycle.html(协调活动部分)

答案 3 :(得分:3)

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

  • A onCreate()A onStart()A onResume()

现在点击startActivity(intent)

  • A onPause()B onCreate()B onStart()B onResume(),{{1 }}

如果您在活动A onStop()中按返回按钮,则生命周期调用将是.....

  • B BonPause() AonRestart() AonStart() A,{{1 }} onResume()B onStop()


现在再出现一个场景“从活动B通过在按钮单击上调用onDestory()来启动活动A,并在活动{上的B方法内使用StartActivity(Intent)方法{1}}”

  • finish() onstart()B AonPause() BonCreate() B,{{1 }} onStart()A onResume()

答案 4 :(得分:1)

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

同时按后退键

导航回firstactivity

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

答案 5 :(得分:1)

enter image description here

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

答案 6 :(得分:0)

使用Log将日志发布到Logcat。

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

答案 7 :(得分:0)

生命周期回调的顺序是明确定义的,特别是当两个活动在同一个进程中而另一个正在启动另一个时。这是活动A开始活动B时发生的操作顺序:

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

答案 8 :(得分:0)

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

  

活动A的onPause()方法执行。

     

活动B的onCreate(),onStart()和onResume()方法按顺序执行。 (活动B现在具有用户焦点。)

     

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

1