zoukankan      html  css  js  c++  java
  • Actibivity的生命周期

      有许多人对Activity的生命周期理解的不够透彻,希望下面的文字能你们带来一定的帮助。

      首先看看android developers 网上的activity的生命周期图:

     

    1. Activity启动的时候:onCreate ---> onStart ---> onResume 这个过程大家都知道,我就不多讲了。

    2.接下来我主要讲讲: 何时onPause, 何时onStop,何时onDestory; 以及恢复的时候,何时onRestart,何时onResume。

    为了方便大家理解,根据以下示例来进行讲解,如下图

       

      Activity04为当前的Activity,SecondActivity为第二个Activity。

    通过Activity的生命周期图我们可看出Activity在Running状态跳转到OnPause状态的原因是:Another activity comes in front of the activity.也就是说:另一个activity启动并运行了;

    比如说通过startActivity启动了SecondActivity,那么SecondActivity就在ui视图的最顶层了,而Activity04不再是最顶层的activity了,此时就会onPause了,此时我们依然还能看到Activity04,只是Activity04已经站在他人之后了。

        而当Activity04完全被SecondActivity挡住,完全看不见的时候,此时Activity04就会onStop了。Activity的生命周期图可以看出onPause到onStop的原因是:the activity is no longer visiable. 也就是说此时Activity04完全不可见了,从这里我们可以猜测当按下home键的时候,当前activity就会处于onStop的状态。

    从actvitiy的生命周期图中,我们可以看出activity是可以停留在onPause和onStop在这两个状态上的,因为可以相应的恢复。

    3. 那么何时停留在onPause,何时停留在onStop呢?

    下图的Activity04就是处于onPause状态:


    因为这里的SecondActvity是dialog样式:
    <activity android:name=".SecondActivity" android:theme="@android:style/Theme.Dialog">
    也就验证了当Activity04不再在最顶端,但仍然可见的时候,Activity04就处于onPause状态,此时如果退出(back键)second activity,那么Activity04就会onResume。


    下图的Activity04就是处于onStop状态(注意,这里的ThirdActivity是在Activity04中通过ThirdActivity 按钮启动的):


     


    因为此时Activity04已经完完全全被ThridActvity挡住了,完全不可见了,所以Activity04处于onStop状态,如果此时退出ThridActivity(back键),那么Activity04就会onRestart().


    何时onDestory呢?
    当在Activity04中按back键,退出时,最终就会走到onDestory,或者在代码中调用finish()的时候也会走到onDestroy这一步。



    对于activity生命周期图的左侧部分:

    Activity04处于onPause和onStop状态时,当更高优先级的apps需要内存,而此时系统内存不够了,那么android系统就会将Activity04所在的进程给杀了以释放资源。
    当然被杀了之后,想重生,那必须得从头来过: onCreate ---> onStart() ---> onResume().


    示例下载 Activity_04.rar





  • 相关阅读:
    easyui 获取分页栏中的行数(pageSize)和页码数(pageNumber)
    C# 跨盘符移动文件
    C# Json简单处理
    HTML精确定位:scrollLeft,scrollWidth,clientWidth,offsetWidth之完全详解
    Jquery中的(function($){...})(jQuery)
    前端框架你究竟选什么
    Kindeditor使用心得
    jvm——内存模型
    jvm——NIO
    Java——静态类型 实际类型
  • 原文地址:https://www.cnblogs.com/huangjihua/p/4125176.html
Copyright © 2011-2022 走看看