一、activity生命周期
不多说先上图
从图中可以看到activity有七大生命周期,接下来开始介绍:
public class ActivityDemo extends AppCompatActivity {
/**
* activity被创建时执行的方法,并绑定XML文件;也可以做数据的恢复。
* @param savedInstanceState
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_activity_demo);
Log.e("-------->","onCreate");
}
/**
*当activity可见时调用
*/
@Override
protected void onStart() {
super.onStart();
Log.e("-------->", "onStart");
}
/**
*当activity获取焦点时被调用,即可以与用户进行交互了。
*/
@Override
protected void onResume() {
super.onResume();
Log.e("-------->", "onResume");
}
/**
*当activity失去焦点时别调用。
*/
@Override
protected void onPause() {
super.onPause();
Log.e("-------->", "onPause");
}
/**
*当activity不可见时被调用。
*/
@Override
protected void onStop() {
super.onStop();
Log.e("-------->", "onStop");
}
/**
*当activity被销毁的时候被调用。
*/
@Override
protected void onDestroy() {
super.onDestroy();
Log.e("-------->", "onDestroy");
}
/**
*当activity重新可见时被调用。
*/
@Override
protected void onRestart() {
super.onRestart();
Log.e("-------->", "onRestart");
}
/**
* 当activity被意外销毁时调用,不是用户按手机返回键导致。
* @param outState
*/
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Log.e("-------->", "onSaveInstanceState");
}
/**
* 用来恢复数据
* @param savedInstanceState
*/
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
Log.e("-------->", "onRestoreInstanceState");
}
}
除了activity的生命周期外,我们在上面的程序中还能看到两个方法onSaveInstanceState和onRestoreInstanceState。
在这里说明一下,onSaveInstanceState只有程序被以外退出(内存不足)或者按Home时才会被调用,并且存储的是临时数据,onPause通常用来存储持久数据。可以通过onRestoreInstanceState的Bundle中获取数据或者从onCreate的Bundle中获取数据,只需判断是否为null。