Android常用组件|青训营笔记
这是我参与「第四届青训营」笔记创作活动的的第2天
01.基础组件
1.1 Activity
前台交互、程序入口、界面容器
基本用法:注册 -> 布局 -> 绑定
生命周期:
- onCreate()
- onStart()
- onResume()
- onPause()
- onStop()
- onRestart()
- onDestory()
- onSaveInstanceState()
- onRestoreInstanceState()
打开页面 1 -> 2 -> 3 关闭页面 4 -> 5 -> 6 销毁 3 -> 4 -> 8 -> 5 -> 6 重建 1 -> 2 -> 9 -> 3
常见场景: 启动推出场景、部分遮挡、完全遮挡、配置变更、后台回收
启动模式:
standard(允许重复), singleTop(不允许连续重复), singleTask(不允许同个栈内重复), singleInstance(整个系统不允许重复)
1.2 界面组件(Fragment)
解决页面碎片化问题、速度快(轻量级页面容器)
基本用法:静态绑定、动态绑定
生命周期:
- onAttach()
- onCreateView()
- onActivityCreated()
- onDestroyView()
- onDetach()
常用场景:
- 启动
- 退出
- 部分遮盖
- 部分遮挡恢复
- 完全覆盖
- 完全遮挡恢复
与Activity交互: 组件获取、数据传递
1.3 服务组件(Service)
基本用法:注册 -> 创建 -> 加载
生命周期:
onStart() onBind() onCreate() onDestroy()
与Acitivity通信
1.4 广播组件(Broadcast)
静态广播(注册、创建、接受、发送)、动态广播
1.5 数据组件(ContentProvider)
基本用法: 生产者:注册、属性、创建、方法 消费者:声明、使用、方法
1.6 意图组件(Intent)
- Context.startActivity(intent)
- Context.startService(intent)
- Context.sendBroadcast(intent)
基本用法:显式Intent、隐式Intent
系统能力:电话、短信、网页、邮件、地图、拍照、设置、市场
02.通信组件
2.1 Handler(线程通信
基本用法:创建、构造Message、发送、处理
原理:消息队列
2.2 Binder(进程通信
相较于Socket,效率较高
Linux进程隔离,无法共享内存
基本用法: 服务端:定义AIDL文件、实现接口,编写service、提供实体类 客户端:拿到AIDL协议文件,绑定service
原理:匿名共享内存,Binder驱动,ServiceManager