Android N For Developers 笔记(二)

上篇介绍了多窗口模式与消息推送的相关内容。这篇继续往下note:

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值