一、生命周期7个
onCreate
onStart
onResume
** onPause**
** onStop**
** onDestory**
** onRestart**
onCreate是初始化工作
onCreate和onDestory是一对。onStart和onStop是一对,控制是否可见。
onResume和onPause是一对,控制是否可交互。比如新对话框B如果完全挡住A,则A会执行onPause,onStop。如果只是部分遮挡,则只执行onPause。
onRestart,比如新打开的B被关闭了,又重新回来。onRestart会返回到onStart继续往下,并不会执行onCreate
onPause不能做太复杂的操作,原因如下
<pre>
A.onCreate
A.onStart
A.onResume
A.onPause//打开全遮挡的B
B.onCreate
B.onStart
B.onResume
A.onStop
</pre>
可见耗时过长,会影响B的打开
二、参考Android Activity类中的finish()、onDestory()和System.exit(0) 三者的区别
finish是Activity的类,仅仅针对Activity,当调用finish()时,只是将活动推向后台,并没有立即释放内存,活动的资源并没有被清理;当调用System.exit(0)时,杀死了整个进程,这时候活动所占的资源也会被释放。
Activity.finish()
Call this when your activity is done and should be closed.
在你的activity动作完成的时候,或者Activity需要关闭的时候,调用此方法。
当你调用此方法的时候,系统只是将最上面的Activity移出了栈,并没有及时的调用onDestory()方法,其占用的资源也没有被及时释放。因为移出了栈,所以当你点击手机上面的“back”按键的时候,也不会找到这个Activity。Activity.onDestory()
the system is temporarily destroying this instance of the activity to save space.系统销毁了这个Activity的实例在内存中占据的空间。
在Activity的生命周期中,onDestory()方法是他生命的最后一步,资源空间什么的都没有咯~~。当重新进入此Activity的时候,必须重新创建,执行onCreate()方法。System.exit(0)
这玩意是退出整个应用程序的,是针对整个Application的。将整个进程直接KO掉。使用时,可以写在onDestory()方法内,亦可直接在想退出的地方直接调用:
System.exit(0);
或 android.os.Process.killProcess(android.os.Process.myPid());