Activity是Android应用的最重要的四大组件之一,其他三个分别是Service、BroadcastReseiver和ContentProvider,而Activity是Android应用最常见的组件。
在学习Activity的时候,首先我们来看一下Activity的生命周期,只有熟练的掌握的Activity的生命周期,才能在相应的生命周期中来完成我们相应的工作。
Activity的生命周期
当Activity处于Android应用中运行时,他的活动状态有Android以Activity栈的形式管理,当前活动的Activity的位于栈顶。随着不同应用的运行,每个Activity都有可能从活动状态转入非活动状态,也有可能从非活动状态转入活动状态。
Activity的生命周期如下图所示:
从上图我们可以看到:在Activity的生命周期中,如下方法会被系统调用:
1、onCreate(Bundle saveStatus)创建Activity的时候被回调。该方法只会被调用一次。
2、onStart():启用Activity时候被调用该方法。
3、onRestart():重新启用Activity的被启动时调用该方法。
4、onResnme():恢复Activity时候调用,在onStart()方法之后一定会调用onResume()方法。
5、onPause():方法:暂停Activity时候调用;
6、onStop()方法:停止Activity时候被调用;
7、onDestroy():销毁Activity时候调用,该方法只会被调用一次。
下面我们贴一段源码:来看一下Activity的各个生命周期的执行情况:
publicclass ActivityDemoextends Activity {
privatestaticfinal StringTAG = ActivityDemo.class.getSimpleName();
@Override
protectedvoid onCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_demo);
Log.i(TAG,"onCreate-->Begin");
}
@Override
protectedvoid onStart() {
super.onStart();
Log.i(TAG,"onStart-->Begin");
}
@Override
protectedvoid onRestart() {
super.onRestart();
Log.i(TAG,"onRestart-->Begin");
}
@Override
protectedvoid onResume() {
super.onResume();
Log.i(TAG,"onResume-->Begin");
}
@Override
protectedvoid onPause() {
super.onPause();
Log.i(TAG,"onPause-->Begin");
}
@Override
protectedvoid onStop() {
super.onStop();
Log.i(TAG,"onStop-->Begin");
}
@Override
protectedvoid onDestroy() {
super.onDestroy();
Log.i(TAG,"onDestroy-->Begin");
}
}
第一次打开Android应用的时候:依次执行的生命周期的方法是:onCreate()--->onStart()èonResume()。
当我们点击返回键退出应用的时候:依次执行的生命周期方法是:onPause()-->onStop()-->onDestroy()。
还有一种比较常见的情况,就是我们点击Home键的时候,这时候应用依次执行的生命周期方法是:onPause()èonStop()。我们可以看到这个时候应用并没有执行onDestroy()方法。原因是这个时候应用并没有完全退出,而只是进入到后台运行。但是这时候Activity并不是稳定的,如果Android系统在内存不足的时候可能会进行内存清理,会使应用退出。
按下Home键,之后在进入应用的时候,这时候应用依次执行的生命周期方法:onRestart()--onStart()--onResume()。
还有一种最常见的情况,是从一个Activity跳转到另一个Activity。这个时候Activity的生命周期方法执行的过程和按下Home键的执行过程是一样。当你点击返回键再返回到上一个Activity的时候应用依次执行的生命周期方法:onRestart()--onStart()--onResume()。
上面我们说到,当Activity处于Android应用中运行时,他的活动状态有Android以Activity栈的形式管理,当前活动的Activity的位于栈顶。随着不同应用的运行,每个Activity都有可能从活动状态转入非活动状态,也有可能从非活动状态转入活动状态。
进入到下一个Activity时候,当前Activity被放到栈底,但是这个时候这个Activity并没有被销毁,还是有可能从非活动状态转入活动状态(同样要是被Android系统回收机制回收的话,也可能被销毁)。
好了,就说到这里,刚开始学习Android,希望能够认真学习,认真总结。