您的位置:首页 > 移动开发 > Android开发

Android 7.0 新特性--Direct Boot

2016-11-06 11:42 861 查看
Direct Boot (Android Development Patterns S3 Ep 8)

官网视频链接:

https://www.youtube.com/watch?v=fb2Zwmc3Sp4

官网博客介绍链接:

http://android-developers.blogspot.com/2016/04/developing-for-direct-boot.html?utm_campaign=android_series_blogpost_062116&utm_source=anddev&utm_medium=yt-desc

What is Direct Boot?

从Android N 开始,设备启动后,用户未解锁之前,可以进入一个叫Direct Boot的模式,在这个模式下,操作系统全速运转,除非应用已经设置过可以进入Direct Boot,不然无法访问应用的数据,也就无法对应用进行相关操作。

Is Direct Boot right for my app?

但是并不是所有的应用都适用进入该模式,一些即时性需求较高的应用可以进行相应的设置,比如闹钟、消息类通讯应用、向其他应用或者系统提供服务的应用等。

Making your app Direct Boot aware

通过在Manifest文件中按如下明确指定的方式,可以让app在Direct Boot模式时运行,

<activity|provider|receiver|service
android:directBootAware=”true”>


当系统进入Direct Boot模式时,会发送Intent.ACTION_LOCKED_BOOT_COMPLETED的广播,App可以监听该广播以进入Direct Boot模式,用户解锁设备后,所有app仍然能够监听到Intent.ACTION_BOOT_COMPLETED的广播。

Using the device protected storage area

在用户未解锁之前要是app能够运行,需要解锁私有的app的数据,Android N设备提供两种类型的存储位置:

1.Credential protected storage。默认的所有应用数据存储位置,只有在设备解锁后才能使用。

2.Device protected storage。新的存储类型,只要设备是启动后,随时可以访问存在在这里的数据,包括Direct boot模式时。

所以要使app在Direct Boot模式下能运行,除了前面在Manifest里进行的显示声明外,需要将在Direct Boot模式下运行时涉及的数据存储到Device protected storage,注意只应该将能使app在Direct Boot模式下运行必须的数据存放在Device protected storage,其他的一些用户敏感数据应该放在Credential protected storage,要访问Device protected storage,需要在使用所有文件相关的API时,用以下的Context,

Context deviceProtectedContext = context.createDeviceProtectedStorageContext();
deviceProtectedContext.openFileInput( ... )


可以使用Context.moveSharedPreferencesFrom() 和Context.moveDatabaseFrom()

对原来的数据进行转存,

备注:可以通过以下方法直接判断设备当前的解锁状态:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android-N DirectBoot