安卓组件
1 Android中的组件
- 两种Hello World
继承Activity,实现OnCreate()
四大组件:
- Activity内容展示, 与用户互动
- Service后台长期运行
- BroadcastReceiver 接受信息,主动做出处理
- Content Provider 应用数据的管理与共享
2 intent类型:
两种
-
显式Intent:知道组件名,只有一个组件可以处理
-
隐式Intent:声明执行的常规操作,运行多个应用来响应;
ps:启动Service ,使用显式的Intent
3 intent匹配规则
隐式Intent匹配规则三个维度
- action 匹配规则:
- Category匹配规则
- data 匹配规则
调试intent的技巧:am命令发送intent来启动activity
语法:adb shell am start a、t、d、e、n
4 intent 的信息传递
基础类型:
java的八种基本类型+String引用类型+CharSequence
复杂对象两种:
- Serializable:序列化, 将对象转化为可储存,只需要实现Serializable接口
- Parcelabe : 不同组件之间, 性能更优, 内存间数据传输,需要自定义打包解包,优先选用
5 Activity生命周期管理
按下返回键:
- 启动应用onCreate-onStart-onResume
- 按下返回onPuse- Onstope- onDestrov
- 重启启动onCreate-onStart-onResume
按下Home键,Configuration改变(屏幕旋转,字体大小改变,语言变化, 键盘显示隐藏,切换字体、主题)
会出现重新启动onDestroy,onCreat
6 提升进入界面的速度
测试时间方法:adb shell am start -W[packageName]/[PackageName.MainActivity]
应用启动关键流程:
-
开始, Zygote创建进程--创建初始类Applicat--创建Acitivity--onCreate--配置主题信息--onStart--onResume--Measure/layout--显式
优化的策略
- 耗时任务异步处理(onCreate(),onResume())
- 布局优化
- 减少布局层次去除冗余
- merge标签
- 自定义组件
- Viewstub
- 不可视图延迟加载
- 资源分开初始化
- addView
- 页面分开加载
7 service生命周期管理
后台长时间执行运行操作,不需要提供界面
启动方式
- bindService (组件与服务进行交互,发送请求)
- startService
- 服务启动后可以无限期运行
- 启动服务的组件已经被销毁了也不受影响
8 绑定Service
三种方式参考点
-
扩展Binder类(用用程序私有,客户端运行一个进程
-
服务端提供客户端可调用
-
扩展返回服务实例
-
-
Messenger(不同进程间的通信,每次处理一个请求
- 客户端使用ibinder将message实例化,
- message对象向服务发命令
-
AIDL文件(不同进程间, 服务每次处理多个请求
- Android接口定义语言
- 将对象解析为可识别的方式
9 接收器的注册
BroadcastReceiver用来响应系统范围内的广播事件的组件
事件----》AMS发送广播-----》APP(BroadcastReceiver)启动服务
两种注册方式:
- 静态注册 AndroidManifest.xml中声明
- Activity
- Service
- BroadcastReceiver
- ContentProvider
- 动态注册Context的子类中添加(BroadcastReceiver)
比较:静态注册常驻型,程序关闭亦可激活,动态注册非常驻,注册和注销需要成对出现。
10 广播的发送
无序广播:发送接受者内容相同,接受者不受到影响
有序广播:先到优先级高的接受者, 接受者可以停止广播,优先级可以获得经过处理的信息;
BroadcastReceiver 生命周期管理
从调用开始,到OnReceiver执行结束;
Android 教程
系统架构:
调试
通过单击工具栏上的按钮, Debug 'All Tests' 菜单命令,或者按 Shift+F9 快捷键,启动程序的调试模式
- 快捷键 F8 单步执行程序。
- 快捷键 F7 单步执行程序,遇到方法时进入。
- 快捷键 Alt+F9 运行到光标处。
Activity声明周期,运行机制
‘参考书籍:《第一行代码》《Android 群英传》
Android Studio应用开发实战详解