这里用一个实例来说明生命周期的变化,代码结构大致是这样,两个Activity分别为MainActivity、FirstActivity,在MainActivity中可以跳转到FirstActivity,两个Activity都覆盖了常见的生命周期方法,如下:
1 onCreate
2 onRestart
3 onStart
4 onResume
5 onPause
6 onSaveInstanceState
7 onRestoreInstanceState
8 onStop
9 onDestory
下面是代码,直接看注释即可明白:
1 onCreate
2 onRestart
3 onStart
4 onResume
5 onPause
6 onSaveInstanceState
7 onRestoreInstanceState
8 onStop
9 onDestory
下面是代码,直接看注释即可明白:
public class MainActivity extends Activity {
private String TAG = "MainActivity";
private Button goBtn = null;
/**
* 系列变化一:与其它应用相关
* 1 正常启动MainActivity时,MainActivity的生命周期: onCreate -> onStart -> onResume
* 2 通过任务管理器导航到其它应用时,MainActivity的生命周期: onPause -> onSaveInstanceState -> onStop
* 3 再通过任务管理器导航到MainActivity时,MainActivity的生命周期:onRestart -> onStart -> onResume
*
* 系列变化二:当前应用内部跳转
* 1 启动FirstActivity时,这时涉及到两个Activity,即MainActivity、FirstActivity:
* (1)MainActivity的生命周期: onPause -> [onSaveInstanceState -> onStop]
* (2)FirstActivity的生命周期:onCreate -> onStart -> onResume,此生命周期介于(1)中的onPause和onSaveInstanceState
* 之间。
* 2 从FirstActivityr返回到MainActivity,这时也涉及到两个Activity,即MainActivity、FirstActivity:
* (1)FirstActivity的生命周期: onPause -> [onStop -> onDestory]
* (2)MainActivity的生命周期:onRestart -> onStart -> onResume,此生命周期介于(1)中的onPause和onStop之间。
* 3 在MainActivity按返回键时,MainActivity的生命周期: onPause -> onStop -> onDestory
*
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.v(TAG, "onCreate");
setContentView(R.layout.activity_main);
findWidget();
initWidget();
setListener();
}
private void findWidget() {
goBtn = (Button) this.findViewById(R.id.go);
}
private void initWidget() {}
private void setListener() {
goBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, FirstActivity.class);
MainActivity.this.startActivity(intent);
}
});
}
@Override
protected void onRestart() {
super.onRestart();
Log.v(TAG, "onRestart");
}
@Override
protected void onStart() {
super.onStart();
Log.v(TAG, "onStart");
}
@Override
protected void onResume() {
super.onResume();
Log.v(TAG, "onResume");
}
@Override
protected void onPause() {
super.onPause();
Log.v(TAG, "onPause");
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Log.v(TAG, "onSaveInstanceState");
}
@Override
protected void onStop() {
super.onStop();
Log.v(TAG, "onStop");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.v(TAG, "onDestroy");
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
Log.v(TAG, "onRestoreInstanceState");
}
}
FirstActivity的代码和这个是完全一样的,除了这里有跳转事件。