android 7.0 加入 android:directBootAware
来源:互联网 发布:华为云计算哪个部门好 编辑:程序博客网 时间:2024/06/09 16:19
Android N引入了一个新特性: Direct Boot Mode—— 设备启动后进入的一个新模式,直到用户解锁(unlock)设备此阶段结束。
在此 Direct Boot Mode 下 APP 主要使用在如果情况
- Alarm、clock 类的操作
- 需要做重要的或紧急的通知
- 底层服务类
APP 要工作在DBM (Direct Boot Mode)下的话,manifest 中加入:
<activity|provider|receiver|service ... android:directBootAware=”true”>
APP在进入DBM后会收到系统的广播消息: Intent.ACTION_LOCKED_BOOT_COMPLETED
——之前是开机完成,现在如果没有解锁。
用户解锁手机后,APP会收到另一条: Intent.ACTION_BOOT_COMPLETED
—— 开机完成。
DBM下和正常模式下最大的不同是:使用一种新的存储空间:Device protected storage,在正常模式下是看不到这个空间的数据的,这样的话就可以做一些更加完备的安全机制,比如:
把网络连接的Tocken、SSH……放在此独立空间,防止用户平常使用时被其他APP侦听、窃取。
还有一点:DBM模式下的APP只能和同在此模式中的APP通信,貌似是废话哦,这个阶段其他APP也没跑起来呢。
最后一点:一台安装了Android N的设备,第一次使用要创建这个Device protected storage加密分区,方式有:
- 设备的setting中修改:Settings > Developer options > Convert to file encryption
- fastboot中修改:
$ adb reboot-bootloader $ fastboot --wipe-and-use-fbe
在ActivityManagerService的systemReady函数中:
从上面的代码可以看出,systemReady将调用startPersistentApps启动某一类Application。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
从上面的代码,我们知道PhoneApp将有addAppLocked进行处理:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
在ActivityThread.java的main函数中:
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
继续看看attach函数:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
从上面的代码可以看出,流程再次回到了ActivityManagerService:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
我们看看ApplicationThreadNative.java中ApplicationThreadProxy的bindApplication函数:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
在ActivityThread.java中的handler H的handleMessage处理消息(在PhoneApp中的binder解析完收到的数据后,触发BIND_APPLICATION消息给H):
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- android 7.0 加入 android:directBootAware
- android 7.0 加入 android:directBootAware之关机闹钟无声
- android加入jbox2d
- Android TextView 加入图片
- libusb 加入到 Android
- android Editview加入表情
- android 加入log
- Android读取、加入联系人
- android 加入FLAG_ACTIVITY_NEW_TASK
- android 加入so包
- android 加入FLAG_ACTIVITY_NEW_TASK
- 为Android加入busybox工具
- 把Android源代码加入SDK
- 为Android加入busybox工具
- 为Android加入busybox工具
- 为Android加入busybox工具
- 为Android加入busybox工具
- 为Android加入busybox工具
- Python使用SQList判断表是否存在
- jquery 删除节点 添加节点 找兄弟节点
- Android 设置Activity切换时候的动画效果
- 单例模式(Singleton)及其C++实现
- eclipse的DDMS识别不到设备(卸载了ADT)
- android 7.0 加入 android:directBootAware
- BW系列基础
- Kotlin(一)-->Android Studio配置Kotlin开发环境
- Oracle插入多表(insert all/first)
- 在阿里云上搭建svn
- MAC-安装与破解WebStorm
- 借助SourceTree使用Github(三) clone项目到本地
- JSTL的c:forEach标签(${status.index})
- JS精确统计网站PV IP UV等信息