视图控制器
View-Controller 之 生命周期、重建机制、状态管理、页面通信、路由导航
前言
我是一块板砖
我是 Surface Flinger
我是 Window
我是一个会套娃的 View
…… 所以,Window 成了摸鱼般的存在吗?
于是我改名叫 Activity
综上
Note 2019.11.9 加餐:
从设计模式角度 解析 Activity 和 Window 的关系
Note 2020.1.29 加餐:
从视图系统架构设计的角度 解析 PhoneWindow 和 ViewRootImpl 二者的本质和区别
前言
不得不先讲的进程模式
前景模式、可见模式,二者的区别?
Activity 的正常生命周期
生命周期节点与进程模式的对应关系?
为何存在生命周期的设计?
节点的特点、区别,及注意事项?
Note 2020.9.26 加餐:
分享一个用于代替 “在 onPause 和 onStop 中做耗时操作” 的好招
辟谣时间到 ~
综上
Note 2020.11.4 加餐:
面试时切忌使用 “Activity 被系统回收” 等说辞
Note 2021.07.13 加餐:
可见模式,不如我们称其为 “失焦模式”
Note 2022.02.10 加餐:
前台 App 的 Activity 也会被 “回收” ?唯一特例及解析
前言
因为心里没底,而不敢用的状态恢复
什么是重建?引发重建的场景有哪些?
为何要设计出重建的机制?有何好处?
状态保存和恢复的具体过程?(99% 的网文遗漏的关键细节)
状态保存和恢复的的注意事项?
Note 2020.3.15 加餐:
onSaveInstanceState 的执行时机在新 API 中已确定
如何避免 “配置发生变化” 导致的重建?
综上
Note 2021.5.13 加餐:
更简便 且不易出错的 “状态保存恢复” 方式
App 切到后台,页面临时数据 “防丢” 的妙招
前言
提出了正确的问题,事情就解决了一半
Activity 任务、返回栈、启动模式的 7 个扪心自问
任务和返回栈
任务和返回栈 的概念分别为何?
为何分别存在任务和返回栈?
启动模式
为何存在 启动模式 的设计?
4 种启动模式,表面上的特点分别为何?
为何存在 多种启动模式 的设计?
如何设置启动模式?
SingleTask 如何指定与哪个任务关联?
Note 2021.4.30 加餐:
DeepLink 和 allowTaskReparenting 实验的复现方式 和 注意事项
任务清空或保留 Activity 的几种方式?
Note 2020.11.18 加餐:
对启动模式和 FLAG 区别的补充说明
综合案例
(证实了 返回栈 相对于 任务 的独立存在,全程动图和截图为证)
Note 2020.6.17 加餐:
综合实验简化重制版
福利时间到!魔鬼就在细节中 —— 全网独家的、严密测试的 5 个结论:
taskAffinity 真实的适用范围
standard 和 singleTop 的真实本质
singleTop 的真实本质
singleTask 的真实本质及实验佐证
singleTask 和 singleInstance 与最近访问列表的关系
Note 2020.5.17 加餐:
一个 app 能有多少个 ActivityStack
Note 2020.07.27 加餐:
如何在打印信息中正确区分 TaskRecord 和 ActivityStack
Note 2020.08.10 加餐:
通过 Android 9.0 的新 ADB 命令获取简洁的 Activity 堆栈信息
最近访问列表中展示的卡片到底是什么
Note 2020.5.28 加餐:
对 5.17 疑问的实验检验结果
Note 2020.6.29 加餐:
SingleTask 和 SingleInstance 不新建 Task 的特殊情况
为什么 SingleInstance Activity 回退直接回到桌面
Note 2021.6.30 加餐:
系统为何不设计为直接通过 ActivityStack 来管理 ActivityRecord?
前言
不得不先讲的 Intent 匹配机制
关于 Intent 的 7 个深度思考
为何存在路由的设计?
为何存在三大组件的设计?
为何要让 Binder 来当媒婆?
Intent 存在哪几种类型?为何存在这样的区别?
隐式 Intent 的匹配依据?
IntentFilter 的概念和作用为何?
基于 Intent 和 IntentFilter 的匹配规则,提炼出的 4 个要点
关于 Intent 的 3 个实用方法
Intent 使用的 7 个注意事项?
综上
Fragment 的缘起和职责为何?
Fragment 回退栈和 Activity 的区别?为何存在这样的区别?
Fragment 通信与 Activity 的区别?为何存在这样的区别?
Fragment 生命周期为何如此设计?
Fragment 生命周期和 Activity 的关系?
Fragment 的重建和状态管理与 Activity 的区别?
为何会导致 Fragment 重叠?
为何推荐使用 DialogFragment?
为何视图控制器建议用 Fragment 而不是 Activity?
综上
Note 2020.3.31 加餐:
Fragment 最新 API 支持 replace 回退后的状态恢复
后记
最后更新于
这有帮助吗?