Activity 生命周期
什么是 Activity
是一个应用组件,用户可与其提供的屏幕进行交互,以执行拨打电话、拍摄照片、发送电子邮件或查看地图等操作。
Activity 的 4 种状态
名称 | 解释 |
---|---|
running | Activity 处于前台,与用户有交互的情况下,此时 Activity 不会被回收 |
paused | Activity 被一个透明的 Activity 遮罩住,此时处于 paused 状态,如果内存紧张,会被回收 |
stopped | Activity 被另外一个 Activity 完全覆盖,就会处于 stopped 状态,内存紧张的情况下会被虚拟机回收 |
killed | Activity 已经被系统回收了 |
Activity 的生命周期
Activity 的四种启动场景
- Activity 启动:Activity 启动 -> onCreate ->onStart->onResume
- 返回桌面:onPause->onStop
- 桌面重新打开:onRestart->onStart->onResume
- 退出 Activity :onPuase->onStop->onDestroy
Activity 的进程优先级
- 前台 处于与前台和用户有交互的,比如和 Activity 绑定的 Service
- 可见 可见不可操作,
- 服务 service
- 后台 按 Home 返回桌面,进程切换至后台进程,根据内存情况回收
- 空
Android 任务栈
后进先出
Activity 启动模式
onNewIntent 方法的调用时机
名称 | 解释 |
---|---|
standard | 标准模式 |
singleTop | 栈顶复用 |
singleTask | 任务栈单例 |
singleInstance | 单任务栈模式 |
四种模式详讲
standard
标准模式,即每 start 一个 Activity 都会创建一个实例,也是平常最常使用的一种模式。
singleTop
栈顶复用模式,即 start 的 Activity 已经是在栈顶了,就会直接进行复用实例,此时在 intent 中传递的数据会在 onNewIntent 方法中回调。如果目标 Activity 不在栈顶,即创建一个新的实例。
其应用场景为一般的推送消息详情:即受到推送通知,用户进行点击的时候的目标 Activity 会设置为 singleTop 模式,方便复用。
singleTask
任务栈单例模式,即一个任务栈中只会存在一个这样的实例。当 start 目标实例时候,不存在改实例即创建一个新的实例,如果存在,则会移除掉该实例上面所有的实例,让自己处于栈顶,且回调 onNewIntent 方法。
其应用场景为少数情况下销毁 Activity:设置 MainActivity 为 singleTask 模式,当重新启动时候,他会销毁在他之前的所有 Activity 实例。
singleInstance
单任务栈模式,即该 Activity 独享一个 Activity,且只有一个实例。如果已经启动该实例,再次启动将会回调 onNewIntent 方法。
App 的入口
既然 Android 是基于 Java 语言的,而 Java 有 main 方法,那么 Android 有吗?Android 的主入口在哪里?
答案:
有 Main 方法,main 方法在 ActivityThread 类中的第 6041 行 main(String[] args)
Scheme 跳转协议
什么是 Scheme 跳转协议
scheme 是一种页面内跳转协议,是一种非常好的实现机制,通过定义自己的 scheme 协议,可以非常方便的跳转到 app 的各个页面;
通过 scheme 协议,服务器可以定制化告诉 app 应该调换到哪个页面,可以冲通知栏消息定制化跳转页面,可以通过 h5 页面跳转到其他页面等。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于