Android N For Developers 笔记(二)
2016-04-15 16:26
399 查看
上篇介绍了多窗口模式与消息推送的相关内容。这篇继续往下note:
然后,在Android N中新的编译工具集再也不用担心
Data Saver 为用户提供了白名单,被用户列入白名单的应用即使是在Data Saver开启的状态下也不受流量限制的影响。
对于开发者而言,在Android N系统中要主动检查用户是否开启了流量节省程序,并注意节约后台时的数据流量消耗。如果确实需要在后台使用数据流量,也要注意引导用户放开对本应用的限制,将你的应用加入白名单。
系统提供的ConnectivityManagerAPI可能会有所帮助:
调用其getRestrictBackgroundStatus()方法会返回以下三个值:
RESTRICT_BACKGROUND_STATUS_DISABLED:流量控制程序未开启
RESTRICT_BACKGROUND_STATUS_ENABLED:流量控制程序已开启
RESTRICT_BACKGROUND_STATUS_WHITELISTED:流量控制程序已开启,但应用处于白名单,流量不受限
应用要根据返回状态做好相应的处理。
如果需要监听用户对流量控制程序修改,可以注册一个
从命令行的角度,Android N提供了下列指令用于查询和配置网络权限:
$ adb shell dumpsys netpolicy :返回当前整个后台网络限制设置、当前在白名单内的应用包名及其他已知的包。
$ adb shell cmd netpolicy:显示Network Policy Managersuo的所有指令
$ adb shell cmd netpolicy set restrict-background <boolean>:查询流量控制程序是否开启
$ adb shell cmd netpolicy add restrict-background-whitelist <UID>:将指定的应用包(UID)加入白名单
$ adb shell cmd netpolicy remove restrict-background-whitelist <UID>:将指定的应用包(UID)移出白名单
其他的几个点,如访问特定文件夹权限,支持Java 8,语言与地区选择上的优化,及TV录制,如果想了解具体的变更内容,可以查看相应文档。
Profile-guided JIT/AOT compilation
Android N系统在ART中加入了JIT(Just In Time)编译器,JIT是对以前的AOT(Ahead Of Time)的补充,加入JIT后系统性能得到提升,节约了存储空间,更主要的优点是App的安装、运行、版本更新以及系统的更新速度都得到提升。然后,在Android N中新的编译工具集再也不用担心
Doze 模式增强版、后台优化
这两个具体可以看之前的那篇 Android N Behavior Changes 笔记流量节省程序(Data Saver)
Android N中提供了一个全局的流量控制机制,目的自然是为了防止应用程序在后台恶意偷跑宝贵的移动流量。这个功能是默认关闭的,一旦开启之后除了GMS(Google Mobile Service,谷歌移动服务)外,其他应用都是默认不允许在后台使用超过前台所消耗的移动流量。Data Saver 为用户提供了白名单,被用户列入白名单的应用即使是在Data Saver开启的状态下也不受流量限制的影响。
对于开发者而言,在Android N系统中要主动检查用户是否开启了流量节省程序,并注意节约后台时的数据流量消耗。如果确实需要在后台使用数据流量,也要注意引导用户放开对本应用的限制,将你的应用加入白名单。
系统提供的ConnectivityManagerAPI可能会有所帮助:
调用其getRestrictBackgroundStatus()方法会返回以下三个值:
RESTRICT_BACKGROUND_STATUS_DISABLED:流量控制程序未开启
RESTRICT_BACKGROUND_STATUS_ENABLED:流量控制程序已开启
RESTRICT_BACKGROUND_STATUS_WHITELISTED:流量控制程序已开启,但应用处于白名单,流量不受限
ConnectivityManager connMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); // Checks if the device is on a metered network if (connMgr.isActiveNetworkMetered()) { // Checks user’s Data Saver settings. switch (connMgr.getRestrictBackgroundStatus()) { case RESTRICT_BACKGROUND_STATUS_ENABLED: // Background data usage is blocked for this app. Wherever possible, // the app should also use less data in the foreground. case RESTRICT_BACKGROUND_STATUS_WHITELISTED: // The app is whitelisted. Wherever possible, // the app should use less data in the foreground and background. case RESTRICT_BACKGROUND_STATUS_DISABLED: // Data Saver is disabled. Since the device is connected to a // metered network, the app should use less data wherever possible. } } else { // The device is not on a metered network. // Use data as required to perform syncs, downloads, and updates. }
应用要根据返回状态做好相应的处理。
如果需要监听用户对流量控制程序修改,可以注册一个
ConnectivityManager.ACTION_RESTRICT_BACKGROUND_CHANGED(
"android.net.conn.RESTRICT_BACKGROUND_CHANGED"广播,并动态注册receiver来接收该广播,接到后调用ConnectivityManager.getRestrictBackgroundStatus()来确定是否自己的应用被修改。
从命令行的角度,Android N提供了下列指令用于查询和配置网络权限:
$ adb shell dumpsys netpolicy :返回当前整个后台网络限制设置、当前在白名单内的应用包名及其他已知的包。
$ adb shell cmd netpolicy:显示Network Policy Managersuo的所有指令
$ adb shell cmd netpolicy set restrict-background <boolean>:查询流量控制程序是否开启
$ adb shell cmd netpolicy add restrict-background-whitelist <UID>:将指定的应用包(UID)加入白名单
$ adb shell cmd netpolicy remove restrict-background-whitelist <UID>:将指定的应用包(UID)移出白名单
其他的几个点,如访问特定文件夹权限,支持Java 8,语言与地区选择上的优化,及TV录制,如果想了解具体的变更内容,可以查看相应文档。
Scoped Directory Access
TV Recording
Java 8 Language Features
ICU4J Android Framework APIs
Network Security Configuration
相关文章推荐
- Android之本地相册图片选取和拍照以及图片剪辑
- android TextView设置自定义字体
- Android 事件传递
- Android异步消息处理机制详解及源码分析
- Android应用之间的跳转
- [译]Android冰淇淋三明治ICS(4.0+)JNI局部引用的变化
- Android studio编译OOM
- android 基础知识-API
- android那些事系列之android打开各类文件
- Android平台根目录文件
- Mediaplayer State Diagram
- 关于设计模式的一点总结
- android 基础知识-开发代号解释
- Android删除,查找R,输出级别,补充知识,主要组件
- Apktool—A tool for reverse engineering Android apk files
- AndroidStudio
- Android:在工程任意位置获取应用程序的Context
- Android测试开发环境设置结构
- Android三级图片缓存框架思路【附练习Demo】
- android开发中单击事件的多种实现方法