activity生命周期_activity的生命周期有哪些状态

activity生命周期_activity的生命周期有哪些状态一、概述方法简述onCreate()//在系统首次创建Activity时触发在onCreate()方法中,您需执行基本应用启动逻辑,该逻辑在Activity的整个生命周期中只应发生一次。例如,onCreate()的实现可能会将数据绑定到列表,将Activity与ViewModel相关联,并实例化某些类范围变量。此方法接收savedInstanceSta…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

一、概述

在这里插入图片描述

1.方法简述

  • onCreate() //在系统首次创建 Activity 时触发

onCreate() 方法中,您需执行基本应用启动逻辑,该逻辑在 Activity 的整个生命周期中只应发生一次。

例如,onCreate() 的实现可能会将数据绑定到列表,将 Activity 与 ViewModel相关联,并实例化某些类范围变量。此方法接收 savedInstanceState 参数,后者是包含 Activity 先前保存状态的 Bundle 对象。如果 Activity 此前未曾存在,则 Bundle 对象的值为 null。 声明界面(在 XML 布局文件中定义)、定义成员变量,以及配置某些界面。

  • onStart() //当 Activity 进入“已开始”状态时,系统会调用此回调。

onStart()调用使 Activity 对用户可见,因为应用会为 Activity 进入前台并支持交互做准备。例如,应用通过此方法来初始化维护界面的代码。

onStart() 方法会非常快速地完成,并且与“已创建”状态一样,Activity 不会一直处于“已开始”状态。一旦此回调结束,Activity 便会进入已恢复状态,系统将调用 onResume() 方法。

  • onResume() //Activity 会在进入“已恢复”状态时来到前台,然后系统调用onResum() 回调

当 Activity 进入已恢复状态时,与 Activity 生命周期相关联的所有具有生命周期感知能力的组件都将收到 ON_RESUME事件。这时,生命周期组件可以启动任何需要在组件可见,且位于前台时运行的功能,例如启动摄像头预览。

  • onPause() //此方法表示 Activity 不再位于前台(尽管如果用户处于多窗口模式,Activity 仍然可见)

当 Activity 进入已暂停状态时,与 Activity 生命周期相关联的所有具有生命周期感知能力的组件都将收到 ON_PAUSE 事件。这时,生命周期组件可以停止任何无需在组件未在前台时运行的功能,例如停止摄像头预览。

您还可以使用 onPause()方法释放系统资源、传感器(例如 GPS)手柄,或当您的 Activity 暂停且用户不需要它们时仍然可能影响电池续航时间的任何资源。

  • onStop() //如果您的 Activity 不再对用户可见,则说明其已进入已停止状态,因此系统将调用 onStop() 回调。

如果新启动的 Activity 覆盖整个屏幕,就可能会发生这种情况。如果系统已结束运行并即将终止,系统还可以调用 onStop()

onStop() 方法中,应用应释放或调整应用对用户不可见时的无用资源。例如,应用可以暂停动画效果,或从细粒度位置更新切换到粗粒度位置更新。使用 onStop() 而非 onPause() 可确保与界面相关的工作继续进行,即使用户在多窗口模式下查看您的 Activity 也能如此。 还应该使用 onStop() 执行 CPU 相对密集的关闭操作 。

  • onDestroy() //销毁 Ativity 之前,系统会先调用 onDestroy()

    onDestroy() 回调应释放先前的回调尚未释放的所有资源。

2.三种周期

完整生命周期: 完整生命周期始于onCreate方法回调,止于onDestroy方法回调
可见周期: 可见周期始于onStart方法回调,止于onStop方法回调
前台周期: 前台周期始于onResume方法回调,止于onPause方法回调

二、生命周期中涉及到的其他方法

1.onSaveInstanceState() 方法

当应用快被销毁的时候,可以将数据、状态等存储起来

使用 onSaveInstanceState() 可以保存简单轻量的界面状态

当您的 Activity 开始停止时,系统会调用 onSaveInstanceState() 方法,以便您的 Activity 可以将状态信息保存到实例状态 Bundle 中。此方法的默认实现保存有关 Activity 视图层次结构状态的瞬态信息,例如 EditText 微件中的文本或 ListView 微件的滚动位置。

@Override
public void onSaveInstanceState(@NonNull Bundle outState, @NonNull PersistableBundle outPersistentState) { 
   
    super.onSaveInstanceState(outState, outPersistentState);
    //key-value 类型
    outState.putString("","");
}

要想得到此数据,可以在onCreat()方法里面取拿数据

@Override
protected void onCreate(Bundle savedInstanceState) { 
   
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //从savedInstanceState()方法中取得数据
    String  value = savedInstanceState.getString("key");
    initViews();

}

2.onBackPressed()方法

​ 当按返回键的时候会触发该方法

三、四条生命线

Line 1 onCreate() → onDestroy() 完整生命周期

在这里插入图片描述

在这里插入图片描述

Line 2 onStart()→ onStop() 可见周期

在这里插入图片描述
在这里插入图片描述

Line 3 onResume()→ onPause() 前台周期

在这里插入图片描述
在这里插入图片描述)

特殊情况

系统中的 AlertDialog 不是 DialogActivity 的时候 生命周期不会往下走onPause()方法

在这里插入图片描述

Line 4 内存不够时 App 会被kill掉的情况

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/170695.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【激活成功教程】百资繁中输入法_V1.8.1

    【激活成功教程】百资繁中输入法_V1.8.1应用简介  百资繁体中文输入法提供中文手写输入,繁体注音输入、繁体速成输入、繁体仓颉输入及英文输入。  主要功能包括:  1.支援10万组繁体中文词汇,6万Prediction词组及最新流行用语;  2.支援注音模糊输入,让使用者只需输入第一个注音、Tune或部份就可以选择候选词汇;  3.支援注音整个句子输入;  4.支援注音联想功能;

    2022年7月16日
    24
  • ST-Link SWD接口接线

    ST-Link SWD接口接线1、实验目的:实现通过st-link调试stm32芯片2、实验环境:stm32开发板留有20pin的调试接口,可接jlink和stlink调试工具使用st-linkv23、接线方式SWD接口需要连接四根线:VCCGNDSWDIOSWCLK20pin调试接口对应的pin脚关系:Pin1–VCC:ThisisthetragetboardVcc.Itisusedbythe

    2022年5月20日
    65
  • 2021 Navicat 15 for MySQL激活码(JetBrains全家桶)

    (2021 Navicat 15 for MySQL激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月27日
    134
  • Git下载安装手把手教程[通俗易懂]

    Git下载安装手把手教程[通俗易懂]Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。下面我们来详细介绍下,在windows10系统下载和安装git的教程,文章结尾有福利哦!Git安装手把手安装教程:第一步:下载Git打开Git官网下载地址https://git-scm.com/downloads因为我使用Windows系统上的浏览器访问的,Git官网自动之别到了我使用的操作系统.

    2022年5月30日
    38
  • BZOJ2440(全然平方数)二分+莫比乌斯容斥

    BZOJ2440(全然平方数)二分+莫比乌斯容斥

    2021年12月5日
    45
  • Oracle锁表查询和解锁方法

    Oracle锁表查询和解锁方法我们这里一般用的PL/SQL,总是无意间把表锁住,所以我今天就整理了一下简单的解锁和查询锁表的方法;一、首先PL/SQL要以管理员的账号(system/admin等)登录,管理员的账号和密码根据个人设置而来,连接为一般选择Normal,也可选择SYSDBA;二、相关SQL语句:–以下几个为相关表SELECT*FROMv$lock;SELECT*FROMv$sqlarea;S…

    2022年6月7日
    58

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号