如果我通过这种方式从Activity1启动Activity2:startActivity(Activity2);
首先执行的是什么:onStop()
(Activity1)还是onStart()
(Activity2)?
他们是同时还是轮流工作?如果一个接一个,什么是第一个?
一般来说:如果这个订单存在,第一个活动开始时第二个活动的状态顺序是什么?
答案 0 :(得分:12)
让Say Activity A通过调用StartActivity(Intent)方法启动Activity B,然后生命周期调用如下: -
现在按住clickActivity(意图)按钮
onPause()
B onCreate()
B onStart()
B onResume()
onStop()
.....如果你按下活动B的后退按钮,那么lifeCycle会是.....
B onPause()
onRestart()
onStart()
onResume()
现在还有一个场景"来自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
B
,onPause()
A
,onRestart()
A
,onStart()
A
,{{1 }} onResume()
,B
onStop()
现在再出现一个场景“从活动B
通过在按钮单击上调用onDestory()
来启动活动A
,并在活动{上的B
方法内使用StartActivity(Intent)
方法{1}}”
finish()
onstart()
,B
A
,onPause()
B
,onCreate()
B
,{{1 }} onStart()
,A
onResume()
答案 4 :(得分:1)
当我们从第一个活动导航到第二个活动时 调用onPause()方法,然后调用onStop(),然后调用第二个活动的onCreate()方法,然后调用onStart(),然后调用onResume()。
同时按后退键
导航回firstactivity调用第二个活动的onPause()方法,然后调用onStop(),然后调用第一个活动的onRestart()方法,然后调用onStart(),然后调用onResume()。
答案 5 :(得分:1)
答案 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()方法。