Activity生命周期
参考文献:http://blog.csdn.net/liuhe688/article/details/6733407
返回栈
Activity 是可以进行叠加的,我们没开启一个新的活动,就会覆盖在原活动上,然后点击返回键会返回到最上面的活动,会将栈的最顶端移除(返回栈中的Activity的顺序永远都不会发生改变,我们只能向栈顶添加Activity,或者将栈顶的Activity移除掉,栈是一种先进先出的数据结构)
活动状态
每个活动在其声明周期中最多会有四个状态:
运行状态
当一个活动处于栈顶的时候,这时就是运行状态暂停状态
当活动不在栈顶位置的时候,但是仍然可以可见,这样就进入暂停状态停止状态
当活动不在处于栈顶位置,并且完全不可见的时候就进入到停止状态- 停止状态
当一个活动从返回栈中移除后变为了销毁状态
- 停止状态
活动的生存期
activity中定义了七个方法形成了activity的生命周期
- onCreate()
在活动第一次创建的时候进行调用,在这个方法中完成活动的出事化 - onStart()
活动由可见变为不可见的时候进行调用 - onResume()
- onPause()
- onStop()
- onDestory()
onRestart()
生命周期图表
1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。
2.当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause方法,暂停当前Activity的执行。
3.当前Activity由被覆盖状态回到前台或解锁屏:系统会调用onResume方法,再次进入运行状态。
4.当前Activity转到新的Activity界面或按Home键回到主屏,自身退居后台:系统会先调用onPause方法,然后调用onStop方法,进入停滞状态。
5.用户后退回到此Activity:系统会先调用onRestart方法,然后调用onStart方法,最后调用onResume方法,再次进入运行状态。
6.当前Activity处于被覆盖状态或者后台不可见状态,即第2步和第4步,系统内存不足,杀死当前Activity,而后用户退回当前Activity:再次调用onCreate方法、onStart方法、onResume方法,进入运行状态。
7.用户退出当前Activity:系统先调用onPause方法,然后调用onStop方法,最后调用onDestory方法,结束当前Activity。
但是知道这些还不够,我们必须亲自试验一下才能深刻体会,融会贯通。
我通过俩个activity之间的跳转来进行查看活动的生命周期
MainActivity.java
“`
public class MainActivity extends Activity {
@Bind(R.id.go)
Button go;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
Log.d("1234","第一个页面的onCreate方法");
}
public MainActivity() {
super();
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.d("1234","第一个页面的onDestory方法");
}
@Override
protected void onStop() {
super.onStop();
Log.d("1234","第一个页面的onStop方法");
}
@Override
protected void onRestart() {
super.onRestart();
Log.d("1234","第一个页面的onRestart方法");
}
@Override
protected void onPause() {
super.onPause();
Log.d("1234","第一个页面的onPause方法");
}
@Override
protected void onResume() {
super.onResume();
Log.d("1234","第一个页面的onResume方法");
}
/**
* 显示跳转
*/
@OnClick(R.id.go)
public void onClick() {
Intent intent=new Intent(this,SecondActivity.class);
startActivity(intent);//开启新一个活动
}
}
一次运行程序,会出现一下的结果:
第一打开软件:
让程序进入后台:
再次进入到程序
杀死程序
以上展示了这七个方法,表示了活动的生命周期