我想通过调用startActivity(intent)
从另一个Activity(FIRST Activity)开始一个Activity(SECOND Activity)。在我真正做到之前,我发现有人说生命周期方法按以下顺序调用:
FIRST Activity onCreate
FIRST Activity onStart
FIRST Activity onResume
FIRST Activity onPause
SECOND Activity onCreate
SECOND Activity onStart
SECOND Activity onResume
FIRST Activity onStop
SECOND Activity onResume
之前总是调用FIRST Acitivity onStop
吗?我想
FIRST Activity onPause
FIRST Activity onStop
SECOND Activity onCreate
SECOND Activity onStart
SECOND Activity onResume
将被调用,但似乎没有。
另外,如果我只是在两个活动之间切换,
FIRST Activity onPause
SECOND Activity onRestart
SECOND Activity onStart
SECOND Activity onResume
FIRST Activity onStop
这些方法总是按此顺序调用吗?
答案 0 :(得分:38)
根据文档,应该在FIRST.onStop()之前调用SECOND.onResume() https://developer.android.com/guide/components/activities/activity-lifecycle.html#soafa (协调活动部分)
答案 1 :(得分:10)
假设有两个活动FirstActivity
和SecondActivity
。
然后此顺序将始终保持不变。
//当您启动FirstActivity
(1)OnCreate()-> OnStart()->
FirstActivity
的OnResume()将被调用
//当您使用以下方法启动SecondActivity时 startActivity(FirstActivity.this,SecondActivity.class)
(2) FirstActivity 的OnPause()将被调用,然后
(3)OnCreate()-> OnStart()-> SecondActivity 的OnResume()将被调用
(4) FirstActivity 的OnStop()将被调用
//当您按下 SecondActivity
上的后退按钮时然后将调用 SecondActivity 中的(5)OnPause() 然后将调用 FirstActivity 的
(6)OnRestart()-> OnStart()-> OnResume()
SecondActivity 的(7)onStop()-> onDestroy()将被调用
Note:
(1) OnPause() will be called first when you navigate to any other activity.
(2) OnStop() will be called when activity is no longer Visible on screen.
答案 2 :(得分:-1)
首先打开活动: onCreate(),OnStart(),onResume()
用户单击backButton(): onPause(),onStop(),onDestroy()
导航到另一个屏幕:
第一个屏幕:onPause(),onStop()
第二个屏幕:onCreate(),OnStart(),onResume()
在“活动2”中按“后退”按钮:
第二个屏幕:onPause(),onStop(),onDestroy()
第一个屏幕:onRestart(),onStart(),onResume()
用户锁定设备:onPause(),onStop()
再次打开锁: onRestart(),onStart(),onResume()