| |
|
开发:
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 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年3日历 | -2025/3/1 0:06:12- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |