zoukankan      html  css  js  c++  java
  • Activity生命周期理解

    在Android应用程序运行时,Activity的活动状态由Android以Activity栈的形式管理,当前活动的Activity位于栈顶。随着应用程序之间的切换、关闭等,每个Activity都有可能从活动状态转入非活动状态,当然,也可以从非活动状态转入活动状态。

    下面,我们借助一个关于Activity生命周期模型图进行理解。

     

     从图中可以看出来,在Activity的生命周期中,会有如下方法会被系统回调:

    1. void onCreate(Bundle savedInstanceState):创建Activity时会被回调。
    2. void onStart():首次创建Activity时在onCreate方法之后执行,但会有另外一种情况,后面会进行分析,总之,就是启动Activity时被回调。
    3. void onRestart():该活动在Activity没有被销毁时会一直存在Activity栈中,重新启动Activity时会被回调。
    4. void onResume():用户在进行Activity切换时,恢复相应的Activity时回调。在void onStart()方法后一定会回调的方法。
    5. void onPause():Activity被暂停时回调,活动会被压倒栈中。
    6. void onStop():Activity被停止时回调。
    7. void onDestroy():Activity被销毁时回调,完全从系统内存中移除。

    总结归纳起来,Activity会有四种状态:

    •  运行状态:当前Activity位于前台,用户可见,可以获得焦点。
    • 暂停状态:其他Activity位于前台,该Activity依然可见,只是不能获得焦点。
    • 停止状态:该Activity不可见,失去焦点。
    • 销毁状态:该Activity结束,或Activity所在的进程被结束。

    我通过程序测试得出Activity的7个方法会在何时进行回调。

    • 当前程序入口为该Activity,当程序启动时将会自动启动并执行该Activity,会回调onCreate()、onStart()、onResume()三个方法回调,如图

         

    • 当切换到程序的另外一个Activity时,MainActivity不能再获取焦点,但依然可见,此时该Activity进入“暂停”状态,会回调onPause()方法,如图

    •  当返回从另外一个Activity返回到MainActivity时,该Activity会再次进入“运行”状态,会回调onStop()、onRestart()、onStart()、onResume()方法,如图

    • 当直接按下home键返回系统桌面时,当前该Activity失去焦点,但并未销毁,只是进入“停止”状态,会回调onPause()、onStop()方法,如图

    • 当再次从系统桌面进入程序时,会回调onRestart()、onStart()方法,如图

    • 当直接退出程序时,会回调onPause()、onStop()、onDestroy()方法,如图

     由以上实验得onCreate和onDestroy该方法在周期中只会被调用一次。

  • 相关阅读:
    Tomcat笔记
    HAProxy简介
    Ansible简介与实验
    DHCP&PXE&Cobbler简单实现
    Keepalived实现LVS-DR集群高可用
    Web of Science爬虫(WOS、SCI):风车WOS下载器
    梦境时分,记录梦境
    基层码农谈领导力
    企业部署 Kubernetes 的终极目标是什么
    Scrum 敏捷实践中的三大角色
  • 原文地址:https://www.cnblogs.com/de1021/p/11923039.html
Copyright © 2011-2022 走看看