这几天在慢慢的巩固android基础方面的知识,对activity的生命周期和appliaction总是有点晕,所以特别做了点思考。
1 首先附一张activity的生命周期图
比较形象的说明了activity启动的时候所调用的方法,但当activity被不同的方式结束时,onStop()和onDestroy()不一定被调用。测试如下
1 正常按back和finish()方法执行顺序相同。生命周期函数被完全调用
2 采用system.exit(0)的方式退出和kill 进程(实际用的可能性不大)的方式和Process.killProcess(Process.myPid())相同,可以看到activity的onpause(),onstop(),ondestry()均没有执行,比较暴力
3 采用startactivity()启动一个新的activity时的生命周期和home退出到桌面时(home桌面也是一个activity),只有 ondestroy()没有被调用。此时处于stoped状态当按back返回时,调用onstart()和onresume()
那么上述方式退出时,application的生命周期又是怎么样的,自定义了一个application进行测试。重写oncreate()(创建时调用) onConfigurationChanged()(配置文件改变时调用如横竖屏切换)。onlowmemory()(内存不足系统回收时调用) 和onTerminate()(结束时调用)
1 正常按back和finish()方法执行顺序相同。activity生命周期函数被完全调用,application部分调用,说明此类方法退出时,application并没有结束其进程。
2 采用system.exit(0)的方式退出和kill 进程(实际用的可能性不大)的方式和Process.killProcess(Process.myPid())相同,application被杀死但其对应的生命周期方法没有来得及调用onTerminate()
横竖屏切换时应用的生命周期函数和activity周期函数的执行顺序。
启动过程
横竖屏切换时(crtl+F12) activity被完全消亡从新开始加载