参考:https://blog.csdn.net/hanhan1016/article/details/47977489
1.Activity的生命周期
(1)几个状态
活动状态:当前Activity位于前台,用户可见,可以获得焦点。
暂停状态:其他Activity位于前台,该
Activity可见,不能获得焦点。
停止状态:该Activity不可见,不能获得焦点。
销毁状态:该Activity结束。
(2)生命周期方法
onCreate:创建Activity时被回调
onStart:启动Activity时被回调
onRestart:重新
启动Activity时被回调
onResume:显示(可见)Activity时被回调。
onPause:暂停
Activity时被回调
onStop:停止
Activity时被回调
onDestroy:销毁
Activity时被回调
(3)生命周期图
![](https://i-blog.csdnimg.cn/blog_migrate/0c33c8e772a31cd306a6ae9b94d7f548.png)
2.启动Activity
运行的生命周期函数为:
onCreate
onStart
onResume
![](https://i-blog.csdnimg.cn/blog_migrate/aa49b574801ae0261d471b8932fa20ce.png)
3.
按back键返回
运行的生命周期函数为:
onPause
onStop
onDestroy
![](https://i-blog.csdnimg.cn/blog_migrate/3fd7b5f562ce7714dab2a168afaedb2f.png)
4.按home键
运行的生命周期函数为:
onPause
onStop
![](https://i-blog.csdnimg.cn/blog_migrate/9c4e9cfddd7f65ef7741ce666651b4b0.png)
然后再次进入
运行的生命周期函数为:
onRestart
onStart
onResume
![](https://i-blog.csdnimg.cn/blog_migrate/de9bced06ef3c915de6802f23c03f57e.png)
5.finish方法
在Actyvity A 中的onResume方法中使用startActivity的方法进行开启另外一个Activity B,如:
- protected void onResume() {
- // TODO Auto-generated method stub
- super.onResume();
- Log.d("zmq","onResume()");
- Intent intent = new Intent();
- intent.setClass(MainActivity.this, TestActivity.class);
- startActivity(intent);
- finish();
- Log.d("zmq","onResume() I hava run finish()");
- }
此时从Activity A开始运行到打开另外一个Activity B, Activity A中生命周期函数调用顺序:
onCreate
onStart
onResume
onPause
onStop
onDestroy
![](https://i-blog.csdnimg.cn/blog_migrate/5d2cded0c4d41740997c2e61b601bfc7.png)
之前一直以为执行到finish后,后面所有的代码都是不执行的,深深的错误~
然后按返回键退出,直接退出应用。
6.dialog对话框
在Activity A中启动一个对话框风格的Activity
Activity A
运行的生命周期函数为:
onPause
![](https://i-blog.csdnimg.cn/blog_migrate/0ab41fc62e155ea4c8acc28cec9649ed.png)
onResume
![](https://i-blog.csdnimg.cn/blog_migrate/aca2c2a92b096c1ea42714feb6d76993.png)
7.打开一个一般的Activity,不做finish动作:
代码如:
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- if (v.getId() == R.id.enterBtn) {
- Intent intent = new Intent();
- intent.setClass(MainActivity.this, TestActivity.class);
- startActivity(intent);
- }
- }
此时从Activity A开始运行到打开另外一个Activity B, Activity A中生命周期函数调用顺序:
onCreate
onStart
onResume
onPause
onStop
![](https://i-blog.csdnimg.cn/blog_migrate/d0e1f3ec157eee19e282c551d086a1aa.png)
然后按返回键退出,Activity A运行的生命周期函数为:
![](https://i-blog.csdnimg.cn/blog_migrate/01558943bbd053ed9e14c427ea8ae68c.png)