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().

     

     

  • 相关阅读:
    stylus使用文档总结:选择器+变量+插值+运算符+混合书写+方法
    vue项目配置使用flow类型检查
    项目中存在的问题
    坚持
    Enum枚举类使用集合
    JS 随机数字抽签
    【转】Basic C# OOP Concept
    EF异常:WebForm、Console、Winform层不引入EF报错
    EF异常:“System.InvalidOperationException”类型的未经处理的异常在 mscorlib.dll 中发生
    WebServices中使用Session
  • 原文地址:https://www.cnblogs.com/huangjihua/p/2620956.html
Copyright © 2011-2022 走看看