在此之前,我们新建一个项目,代码非常简单,两个活动之间相互跳转(本来想做GIF图的,不会~~~~(>_<)~~~~)
主活动代码如下:
public class MainActivity extends AppCompatActivity {
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.btn);
Log.i("MainActivity--->","onCreate");
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(MainActivity.this,SecondActivity.class));
}
});
}
@Override
protected void onStart() {
super.onStart();
Log.i("MainActivity--->","onStart");
}
@Override
protected void onResume() {
super.onResume();
Log.i("MainActivity--->","onResume");
}
@Override
protected void onPause() {
super.onPause();
Log.i("MainActivity--->","onPause");
}
@Override
protected void onStop() {
super.onStop();
Log.i("MainActivity--->","onStop");
}
@Override
protected void onDestroy() {
Log.i("MainActivity--->","onDestroy");
super.onDestroy();
}
@Override
protected void onRestart() {
super.onRestart();
Log.i("MainActivity--->","onRestart");
}
}
第二个页面代码相差无几,就补贴上了,节省版面。
1,点击应用,进入MainActivity
I/MainActivity--->: onCreate(创建)
I/MainActivity--->: onStart(开启,逻辑层面的可见状态)
I/MainActivity--->: onResume(页面运行中)
2,跳转到SecondActivity页面
I/MainActivity--->: onPause(MainActivity由onResume切换到暂停状态)
I/SecondActivity--->: onCreate(SecondActivity创建)
I/SecondActivity--->: onStart(SecondActivity开启,逻辑层面的可见状态)
I/SecondActivity--->: onResume(SecondActivity页面运行中)
I/MainActivity--->: onStop(上一个页面进入停止状态)
3,返回到MainActivity页面
I/SecondActivity--->: onPause(SecondActivity由onResume切换到暂停状态)
I/MainActivity--->: onRestart(方法在停止到运行状态之间调用)
I/MainActivity--->: onStart
I/MainActivity--->: onResume
I/SecondActivity--->: onStop(SecondActivity页面停止)
I/SecondActivity--->: onDestroy(SecondActivity页面被销毁)
SecondActivity页面停止容易理解,但是SecondActivity页面被销毁是怎么回事呢?为什么MainActivity跳转到另一个页面仅仅只进入了onStop()状态却没有被onDestroy(),在这我们需要说明一个安卓的回退栈的问题。
当然,活动生命周期的改变并不仅仅由跳转页面所决定,比如手机的配置比较低,高优先级的系统级应用需要内存就会把应用杀死,那毫无疑问
活动将由onResume——>onPause——>onStop——>onDestroy
最后一个特殊情况再测试点击手机HOME键:
绝大多数的教程内均写的是点击HOME键任务进入后台,活动onStop()被保存,但是我在真机测试时并不是这样
I/MainActivity--->: onPause
I/MainActivity--->: onStop
I/MainActivity--->: onDestroy
我的设备是魅族MX4,安卓5.1的系统,个人猜想可能是安卓版本不同所导致的,还望高手不吝赐教,谢谢。
未完待续.......