上篇我们了解了Activity的基本概念和Activity的生命周期。今天我们就通过实例来分析下Activity生命周期。
这里我们再看下上一篇的那张图:
图1 Activity生命周期
我们把HelloAndroid工程中的MainActivity类修改为如下:
代码:
packagecom.example.helloandroid;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.util.Log;
publicclass MainActivity extends Activity {
privatestaticfinal String TAG = "MainActivity";
@Override
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i(TAG, "onCreate");
}
@Override
protectedvoid onRestart() {
super.onRestart();
Log.i(TAG, "onRestart");
}
@Override
protectedvoid onStart() {
super.onStart();
Log.i(TAG, "onStart");
}
@Override
protectedvoid onResume() {
super.onResume();
Log.i(TAG, "onResume");
}
@Override
protectedvoid onPause() {
super.onPause();
Log.i(TAG, "onPause");
}
@Override
protectedvoid onStop() {
super.onStop();
Log.i(TAG, "onStop");
}
@Override
protectedvoid onDestroy() {
super.onDestroy();
Log.i(TAG, "onDestroy");
}
}
我们重写图中的七个方法,并打上了log。
下面我们来看一下几种常见情况下的Activity中的方法的调用顺序:
1.当一个Activity启动时:
2.启动完成后:
1)按Back键返回主界面:
2)按HOME键返回主界面:
我们可以看到,按Back键返回和按HOME键返回是不同的,但是两者都会运行,onPause方法和onStop方法。因此我们可以在这两个方法中执行保存数据以及状态的操作。
3.按HOME键后,再点击启动:
我们可以看到按HOME键后再点击桌面图标启动,这时会执行onRestart而不会执行onCreate方法,但都会执行onStart方法和onResume方法。因此回复保存的数据和状态,最好是放在onStart方法和onResume方法中。
4.一个Activity中启动另一个Activity:
第一个Activity执行的方法和按HOME键的效果是一样的,第二个Activity启动就是跑的普通的启动流程。这样我们就很好理解了。
以上就是今天的全部内容了,谢谢大家。内容不多,Activity是基础,任何的数据交互到最后都是需要把结果显示在Activity上面呈现给用户的,因此对生命周期的理解就很重要。
本文欢迎转发,标明出处即可。
微价值网(公号vjiazhi),专注移动互联网、App推广、盈利以及Android/iOS等技术基础培训。