IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Activity生命周期的一些场景流程总结 -> 正文阅读

[移动开发]Activity生命周期的一些场景流程总结

熟悉安卓界面的小伙伴们应该都知道activity的生命周期,分别是onCreate、onStart、onResume、onPause、onStop、onDestroy、onRestart,我们今天主要是来一起看看常见场景下activity生命周期的调用流程。以android12 api31的手机为例

场景1:正常界面的启动

????????onCreate -> onStart -> onResume

场景2:先从A界面跳转到B界面

????????A onPause -> B onCreate -> B onStart -> B onResume -> A onStop -> A onSaveInstanceState

? ? ? ? 再从B界面返回到A界面

????????B onPause -> A onRestart -> A onStart -> A onResume -> B onStop -> B onDestroy

场景3:当前界面按下锁屏键

????????onPause -> onStop -> onSaveInstanceState

? ? ? ? 再打开屏幕

????????onRestart -> onStart -> onResume

场景4:当前界面按下HOME键

????????onPause -> onStop -> onSaveInstanceState

? ? ? ? 再点击任务键或桌面直接打开此应用

????????onRestart -> onStart -> onResume

场景5:当前界面按下任务菜单键

????????onPause -> onStop -> onSaveInstanceState

? ? ? ? 再点击清除杀掉此进程

? ? ? ? 什么周期也没走

场景6:当前界面按下任务菜单键

????????onPause -> onStop -> onSaveInstanceState

????????然后点击应用再次进入

????????onRestart -> onStart -> onResume

场景7:横竖屏切换(未配置configChanges)

????????onPause -> onStop -> onSaveInstanceState -> onDestroy -> onCreate(savedInstanceState不为空) -> onStart -> onRestoreInstanceState -> onResume

场景8:横竖屏切换(配置configChanges="orientation|screenSize")

? ? ? ? onConfigurationChanged

注:

1.横竖屏切换一些注意事项:

Activity的AndroidManifest.xml中设置android:configChanges

1)不添加configChanges = orientation = keyboardHidden = screenSize = orientation|keyboardHidden = keyboardHidden|screenSize,切换横竖屏过程中生命周期是相同的

2)orientation|screenSize,横竖屏切换不不会重新调用各个生命周期,只会执行onConfigurationChanged方法

3)自从Android3.2(API13), 在设置Activity的 android:configChanges="orientation |keyboardHidden"后,还是一样会重新调用各个生命周期的。因为screensize也开始跟着设备的横竖切换而改变。

4)Android3.2(API13)之前:

? ? ? ? (1)不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次

? ? ? ? (2)设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次

? ? ? ? (3)设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法

2.onSaveInstanceState方法

在某种时机下,Activity会调用onSaveInstanceState方法通过保存Bundle参数来保存当前的Activity的数据。onSaveInstanceState方法总是会在onStop后调用。

发生以下等情况会被调用:

????????按下HOME键切到后台时

????????锁屏时(按下电源键或自动锁屏)

????????从该Activity中启动一个新的Activity时

????????横竖屏切换时 (前提是Activity的configChanges属性配置了orientation)

3.onRestoreInstanceState方法

当Activity被重新创建(横竖屏切换,或者被系统强杀重启后的重新创建)之后就会调用onRestoreInstanceState,而它的Bundle参数,就是onSaveInstanceState方法保存的。onRestoreInstanceState这个方法会在onStart后调用。

发生以下等情况会被调用:

????????Activity在后台的情况下,被系统强杀了,再次打开Activity时

????????横竖屏切换时 (会走activity生命周期的情况)

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-09-30 01:04:20  更:2022-09-30 01:05:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 22:25:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码