android activity生命周期

一、生命周期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不能做太复杂的操作,原因如下


    A.onCreate
    A.onStart
    A.onResume
    A.onPause//打开全遮挡的B
    B.onCreate
    B.onStart
    B.onResume
    A.onStop

可见耗时过长,会影响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());

你可能感兴趣的:(android activity生命周期)