四大组件之一 Activity
生命周期
Activity 是与用户交互的界面,所有的Activity 都是存放在栈中的
Android系统是通过Activity栈形式来管理Activity的
Activity的四种形态
1.Active 此时Activity处于栈顶 并且是可见状态而且可以是和用户交互
2.Paused 可见但不可交互的状态 ,暂停 例如被一个透明Activity 覆盖
3.Stopped 不可见 被一个不透明的Activity完全覆盖 当内存不足是会被回收
4.kill 状态 已经进行销毁
Activity 正常情况下的声明周期回调方法
1.onCreate activity 创建 一般用来加载布局
2.onStart activity 创建完成用户可见的状态但是无法进行和用户的交互
3.onResume activity 前台可见并且可以和用户交互
4.onPase 正在停止
5.onStop Activity 即将停止或者是被完全覆盖
6.onDestroy 方法 activity正在被回收,一般用来资源释放
7.onRestart 方法 重新启动之后如果没有被回收执行onStart方法 回收之后重新执行onCreate方法
Activity异常情况下声明周期的分析
onSaveInstanceState 方法 系统自动调用用来保存Activity的状态
onRestartInstanceState 方法 Activity重新启动时会执行用来读取onSaveInstanceState 方法
区别 : onRestartInstanceState bundle 不能为空在数据恢复是尽量选用
Activity 组件之间的通信
activity 的3中通信方式
Activity 与Activity之间的通信
intent 与bundle 之间传递
类静态变量,全局变量
Activity 与Fragment 之间的通信
bundle 和定义方法两种方式进行通信,fragment 与Activity之间的通信使用接口回调,注:一定
要在OnDetch 方法清楚listener
Activity 与Service之间的通讯
1.绑定服务利用ServiceConnection
2.使用INtent 启动时传入Intent 在onStartCommand 方法中进行接收 只能用来传递简单的数据
3.使用接口回调定义callback 调用binder binder实在子线程中执行的,使用handler进行发送
启动模式
Activity 有四种启动模式
standard 默认启动模式
这种模式每次启动都会创建一个任务栈中放在Activity栈的顶部 会默认启动 onCreate onStart
onResme声明周期都会被依次调用
SingleTop 复用栈顶模式
当前栈中已有该Activity的实例并且该实例存在于栈顶时不会重新启动Activity 并且会执行onNewIntent方法
当前栈中已有该Activity的实例但是不存在于栈顶时 就会按照标准模式进行执行
当前栈中不存在该Activity的实例时也会按照标准模式进行启动
应用场景:例如IM聊天页
SingleTask 栈内复用模式
通过taskAffinity(任务相关性) 去寻找当前是否存在一个对应名字的任务栈
如果不存在则会创建一个新的Task
如果存在得到任务栈,查找该任务栈中是否存在该Activity实例,如果存在则调用onNewIntent方法
如果栈中不存在则调用onCreate onStart onResume
应用场景: 应用的主界面
SingleInstance 单一启动模式
以SingleInstance 模式启动的Activity具有全局唯一性 如果任务栈中已经存在会直接调用到前台
以SingleInstance 模式启动任务栈中只能有它自己本身一个实例
应用场景 : 打电话界面
网友评论