预习Android Activity|青训营笔记

87 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第2天

一、概念

Activity它是一种可以包含用户界面的组件,主要用于和用户进行交互,比如打电话,照相,发送邮件,或者显示一个地图!Activity用于显示用户界面,用户通过Activity交互完成相关操作 , 一个App允许有多个Activity。

二、生命周期

1、在官网中我们可以清楚的了解到他们的继承关系子类等信息

image-20220725231758821.png

2、生命周期的流程图

官方:

img

img

图片来源

3、常见场景的生命周期流程流转

启动onCreate() - onStart() - OnResume() - Resumed
退出Resumed - onPause() - onStop() - onDestroy()
部分覆盖Resumed - onPause() - Paused
部分遮挡恢复Paused - onResume() - Resumed
完全覆盖Resumed - onPause() - onSaveInstanceState() - onStop() - Stoped
完全遮挡恢复Stoped - onStart() - onResume() - Resumed
后台回收Stoped - Killed
回收恢复Killed - onCreate() - onStart() - onRestoreInstanceState()- onResume() - Resumed
配置改变Resumed - onSaveInstanceState() - onPause() - onStop() - onDestroy() - onCteate() - onStart() - onRestoreInstanceState() - onResume()

三、启动模式

问题驱动:

  1. 有时候我们的App需要生成给其他App调用的Activity,例如浏览器应用,照相机应用
  2. 解决生成重复页面等等Bug
  3. 任务栈过深的时候,避免一直按返回键也退不回想要的页面
standardActivity默认模式,所有的Activity遵循元素进栈出栈的特性
singleTop栈顶复用模式,如果要开启的activity在任务栈的顶部已经存在,就不会创建新的实例,而是调用 onNewIntent() 方法。避免栈顶的activity被重复的创建。
singleTask栈内复用模式,如果要启动的Activity在当前栈内启动,activity只会在任务栈里面存在一个实例。如果要激活的activity,在任务栈里面已经存在,就不会创建新的activity,而是复用这个已经存在的activity,调用 onNewIntent() 方法,并且清空这个activity任务栈上面所有的activity。
singleInstance单一实例模式,整个手机操作系统里面只有一个实例存在。不同的应用去打开这个activity 共享公用的同一个activity。他会运行在自己单独,独立的任务栈里面,并且任务栈里面只有他一个实例存在。

四、参考资料

彻底明白Activity启动模式-SingleTop、SingleTask、SingleInstance具体使用场景

谷歌开发者-Activity

Android Activity Launch Modes