今日我将给各位讲解我对Activity生命周期的一些理解
如有不对需要改正的地方请多谅解
废话不多说 先给大家看一张我自己做一张图吧
相信学习Android的人应该对这张图都跟熟悉吧,这是安卓Activity的生命周期活动图,详细而直观得表现了Activity各生命周期间的关系。下面我就来说一说这些生命周期吧。
onCreate:第一次启动时会运用到,Create表示创建的意思,这是Activity生命周期的第一个方法,也是我们在android开发中接触的最多的生命周期方法。它的作用是进行Activity的一些初始化工作,比如使用setContentView加载布局,对一些控件和变量进行初始化等。
onStart :Start代表启动,这是生命周期的第二个方法。
onResume:resume表示继续、重新开始,这名字和它的职责也相同。当它出现时 onstart一定被执行。
onPause:pause表示暂停,当Activity要跳到另一个Activity或应用正常退出时都会执行这个方法。
onStop:当activity不可见时才会被启用,stop表示停止,此时Activity已经不可见了,但是Activity对象还在内存中,没有被销毁。这个阶段的主要工作也是做一些资源的回收工作。
onDestroy:当销毁时才可用,destroy表示毁灭,这个阶段Activity被销毁,不可见,我们可以将还没释放的资源释放,以及进行一些回收工作。
onRestart:restart表示重新开始,Activity在这时可见,当用户按Home键切换到桌面后又切回来或者从后一个Activity切回前一个Activity就会触发这个方法。这里一般不做什么操作。当它出现时 onstart一定被执行。
相信说到这里还是有很多疑惑的地方吧
最后,举几个实际例子来说明。
一:假设你有一个“首页Activity”和一个“编辑页Activity”。
当用户点击首页里的“开始编辑”按钮时,首页的onPause()->onStart()onStop()依次触发,编辑页的onCreate()->onStart()->onResume()依次触发;
当用户在编辑页按下“返回”按钮时,编辑页的onPause()->onStop()依次触发,之后首页的onStart() -> onResume()依次触发;
这时用户在首页按下“返回”按钮,首页的onPause()->onStop()->onDestroy()依次触发。
二:当按下back键和home键时会执行哪些生命周期
1:首先让我们打开Android Studio写一段打印生命周期的代码
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.v(TAG, “onCreate”);
}
@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");
}
protected void onPause() {
super.onPause();
Log.v(TAG, "onPause");
}
@Override
protected void onStop() {
super.onStop();
Log.v(TAG, "onStop");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.v(TAG, "onDestroy");
}
}
点击运行然后进行Back和按home操作可以得出
HOME键的执行顺序:onPause->onStop->onRestart->onStart->onResume
BACK键的顺序: onPause->onStop->onDestroy->onCreate->onStart->onResume
说到这里,我的见解也就结束了,我的见解也只是基础了解,如有不对或需要补充的地方可以直接指出。