• 安卓Activity生命周期


    1. 活动状态

    每个活动在其生命周期中最多可能会有4种状态。、

    1. 运行状态
      当一个活动位于返回栈的栈顶时,这时活动就处于运行状态。系统
      最不愿意回收的就是处于运行状态的活动,因为这会带来非常差的
      用户体验。
    2. 暂停状态
      当一个活动不再处于栈顶位置,但仍然可见时,这时活动就进入了
      暂停状态。你可能会觉得既然活动已经不在栈顶了,还怎么会可见
      呢?这是因为并不是每一个活动都会占满整个屏幕的,比如对话框
      形式的活动只会占用屏幕中间的部分区域,你很快就会在后面看到
      这种活动。处于暂停状态的活动仍然是完全存活着的,系统也不愿
      意去回收这种活动(因为它还是可见的,回收可见的东西都会在用
      户体验方面有不好的影响),只有在内存极低的情况下,系统才会
      去考虑回收这种活动。
    3. 停止状态
      当一个活动不再处于栈顶位置,并且完全不可见的时候,就进入了
      停止状态。系统仍然会为这种活动保存相应的状态和成员变量,但
      是这并不是完全可靠的,当其他地方需要内存时,处于停止状态的
      活动有可能会被系统回收。
    4. 销毁状态
      当一个活动从返回栈中移除后就变成了销毁状态。系统会最倾向于
      回收处于这种状态的活动,从而保证手机的内存充足。

    2. 生命周期函数

    • onCreate() 。这个方法你已经看到过很多次了,每个活动中我们
      都重写了这个方法,它会在活动第一次被创建的时候调用。你应该
      在这个方法中完成活动的初始化操作,比如说加载布局、绑定事件
      等。
    • onStart() 。这个方法在活动由不可见变为可见的时候调用。
    • onResume() 。这个方法在活动准备好和用户进行交互的时候调
      用。此时的活动一定位于返回栈的栈顶,并且处于运行状态。
    • onPause() 。这个方法在系统准备去启动或者恢复另一个活动的时
      候调用。我们通常会在这个方法中将一些消耗CPU的资源释放掉,
      以及保存一些关键数据,但这个方法的执行速度一定要快,不然会
      影响到新的栈顶活动的使用。
    • onStop() 。这个方法在活动完全不可见的时候调用。它和
      onPause() 方法的主要区别在于,如果启动的新活动是一个对话框
      式的活动,那么onPause() 方法会得到执行,而onStop() 方法并
      不会执行。
    • onDestroy() 。这个方法在活动被销毁之前调用,之后活动的状
      态将变为销毁状态。
    • onRestart() 。这个方法在活动由停止状态变为运行状态之前调
      用,也就是活动被重新启动了。

    以上7个方法中除了onRestart() 方法,其他都是两两相对的,从而又
    可以将活动分为3种生存期。

    • 完整生存期 。活动在onCreate() 方法和onDestroy() 方法之间
      所经历的,就是完整生存期。一般情况下,一个活动会
      在onCreate() 方法中完成各种初始化操作,而在onDestroy() 方
      法中完成释放内存的操作。

    • 可见生存期 。活动在onStart() 方法和onStop() 方法之间所经历
      的,就是可见生存期。在可见生存期内,活动对于用户总是可见
      的,即便有可能无法和用户进行交互。我们可以通过这两个方法,
      合理地管理那些对用户可见的资源。比如在onStart() 方法中对资
      源进行加载,而在onStop() 方法中对资源进行释放,从而保证处
      于停止状态的活动不会占用过多内存。

    • 前台生存期 。活动在onResume() 方法和onPause() 方法之间所
      经历的就是前台生存期。在前台生存期内,活动总是处于运行状态
      的,此时的活动是可以和用户进行交互的,我们平时看到和接触最
      多的也就是这个状态下的活动。
      在这里插入图片描述

  • 相关阅读:
    【Azure Function App】Python Function调用Powershell脚本在Azure上执行失败的案例
    怎么在dreamweaver嵌套盒子?
    java中静态代码块详解
    编译实战 | 手摸手教你在Windows环境下运行Redis6.x
    web自动化测试-webdriver实现
    Maven(8) 实战总结
    SpringBoot学习小结之Redis
    SpringBoot Event 观察者模式,实现业务解耦
    【freertos】007-系统节拍和系统延时管理实现细节
    torch.jit.trace与torch.jit.script的区别
  • 原文地址:https://blog.csdn.net/qq_45432665/article/details/125994356