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 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android基础知识(进阶) -> 正文阅读

[移动开发]Android基础知识(进阶)

Activity全知识

一、Activity的启动

1. Activity的方法执行顺序

  1. 启动Activity1:
    onCreate -> onStart -> onResume

  2. 退到后台/熄屏
    onPause -> onSaveInstanceState -> onStop

  3. 亮屏/重新进入应用
    onRestart -> onStart -> onResume

  4. 销毁页面
    onPause -> onStop -> onDestroy

  5. Activity1跳转到Activity2:
    启动Activity1
    1onCreate -> 1onStart -> 1onResume
    继续从Activity1中启动到Activity2
    -> 1onPause -> 2onCreate -> 2onStart -> 2onResume -> 1onSaveInstanceState -> 1onStop
    继续退出Activity2
    -> 2onPause -> 1onStart -> 1onResume -> 2onStop -> 2onDestroy

注意: onStop是在Activity不可见的时候执行, onResume是可见的时候立即执行, 所以从Activity1跳转到Activity2时, 先执行Activity2的onResume, 再执行Activity1的onStop

二、方法详解

1. onSaveInstanceState

当某个activity变得”容易”被系统销毁时,该activity的onSaveInstanceState()就会被执行

具体场景:

  1. 按下HOME键
  2. 进入最近任务, 进入其他应用
  3. 进按下电源键关闭屏幕时
  4. 进入新的Activity
  5. 切换屏幕方向

注意:

  1. 只保存与ui相关的状态数据(组件必须有id才能保存)
  2. 只能保存瞬态数据, 如ui状态, 成员变量的值等, 持久化数据的保存,如数据库文件等, 要在onPause中保存

2. onRestoreInstanceState

在onStart() 和 onPostCreate(Bundle)之间调用;

并不与onSaveInstanceState成对出现, 如部分Activity并没有被销毁的情况下, onSaveInstanceState可能调用了, 但是onRestoreInstanceState并没有被调用

3. onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?)

persistentState表示持久化保存, 如在手机重启等情况也可以恢复, 需要在Manifest中的Activity添加属性android:persistableMode="persistAcrossReboots"
类似的还是onSaveInstanceState, onRestoreInstanceState

其他(不常用):

  1. onAttachedToWindow
    在onResume之后执行, 只执行一次, 执行之后还是不能直接获取到view的尺寸
  2. onDetachedFromWindow
    在onDestroy之后执行
  3. onPostCreate
    在onCreate之后执行
  4. onPostResume
    在onResume之后执行
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-09-07 10:56:29  更:2021-09-07 10:57:27 
 
开发: 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年11日历 -2024/11/23 17:06:43-

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