可能是最早的学习Android N新特性的文章

Google在今天放出了Android N开发者预览版。Android N支持Nexus6及以上的设备。5太子Nexus5不再得到更新。

Android N相比于Android 6.0增加了哪些新的功能呢,开发者要关心哪些API呢,通过本篇文章,将一一得到答案。

Android N的新特性

分屏多窗口(Multi-Window Support)

还在为看美剧的时候,收到微信消息而在两个应用间来回切换而烦恼吗。在Android N上,再也不用烦恼这个了。

我们只需要在AndroidManifest文件中增加了一种叫做android:resizableActivity的属性值,并把这个值设为true,我们的应用的Activity将以分屏模式的形式呈现在手机或平板上。

同时Android N在电视等设备上支持画中画模式。只需要设置android:supportsPictureInPicture的值为真即可。

直接回复消息(Direct Reply)

在Android N中,用户将能直接和通知交互来实现快速回复消息或是更新任务列表的功能。呵呵,不得不说这个功能借鉴了iOS。

消息通知上新增了回复按钮。

用户能直接在通知栏回复消息,不再需要进入应用回复了。

归拢通知(Bundled Notifications)

还在为通知栏被各种乱七八糟的通知,推送烦恼吗?不用担心,Android N将为你解决这个问题。之前,Android应用的通知都是独立的,即使是同一个应用。而在Android N中,相同应用的通知可以归纳到一个组中,用户可以点击展开查看每条通知,也可以点击收起。我们只需要在之前构造消息的方法中添加一句Builder.setGroup()即可。

节约数据(Data Saver)

在Android N中,用户可在设置中开启节约数据选项。

当用户开启了节约数据模式并且Android设备正在使用数据流量,Android系统将禁用后台对数据的使用并示意应用尽可能的减少在前台的数据流量的使用。当然,用户可以设置即使开启也能使用后台数据的白名单。

通过ConnectivityManager的getRestrictBackgroundStatus()方法判断用户设置的数据使用限制。

该方法返回三种值:

  • RESTRICT_BACKGROUND_STATUS_DISABLED 没有启用
  • RESTRICT_BACKGROUND_STATUS_ENABLED 启用
  • RESTRICT_BACKGROUND_STATUS_WHITELISTED 启用了但是在白名单中

可通过创建广播监听ConnectivityManager.ACTION_RESTRICT_BACKGROUND_CHANGED ("android.net.conn.RESTRICT_BACKGROUND_CHANGED") 来实现对用户改变节约数据选项的监测。

开发者相关的特性

Android N除了带来了用户相关的新特性,同时也给我们开发者带来了许多新的API。

网络安全配置(Network Security Configuration)

在Android N中,我们不需要修改应用的代码,只需使用一个安全配置声明文件就可以配置应用的网络安全设置。

在AndroidManifest文件中声明如下语句,然后将网络安全配置写在xml文件中。

<?xml version="1.0" encoding="utf-8"?>
...
<app ...>
<meta-data android:name="android.security.net.config"
android:resource="@xml/network_security_config" />
...
</app>

这个特性的几个关键点如下:

  • 自定义受信任的锚
  • 只在调试中使用
  • 阻止明文传输
  • 证书识别

具体API细节可查看Google官方文档Network Security Configuration

ICU4J Android框架API支持(ICU4J Android Framework APIs)

大家可能对ICU4J不太熟悉,我先介绍下。

ICU4J是开源的,被广泛使用的Java库。主要用于软件应用的编码和全球化的支持。

Android N官方支持这个Java库,放置在android.icu这个包里。

具体细节请查看官方文档ICU4J Android Framework APIs

支持Java8(Java 8 Language Features)



Android N开始支持Java8,不容易啊,Android对Java新版本的支持的缓慢一直为人诟病。Java8那么多好用的特性终于能用上了。

Android N开发者预览版目前并不支持Java8所有的语言特性。

支持以下特性:

具体细节请查看官方文档Supported Java 8 Language Features and APIs

配置Gradle文件:

android {
...
defaultConfig {
...
//使用Jack编译工具
jackOptions {
enabled true
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}

Jack编译工具

新推出的Jack(Java Android Compiler Kit)编译工具,将Java源代码编译为Android的dex字节码,并有自己单独的后缀.jack,同时也提供了大多数编译工具需要单独提供的功能:重打包,压缩,混淆以及分包。

老编译工具和新编译工具编译Java代码到dex文件的对比:

  • 老Javac编译工具

javac(.java-->.class)-->dx(.class-->.dex)

  • 新Jack编译工具

Jack(.java-->.jack-->.dex)

具体编译细节和使用方法请查看官方文档Jack (Java Android Compiler Kit)


本文是由JohnTsai原创。著作权由本人保留。

如需转载,请在显著位置注明出处。

欢迎交流讨论。

联系邮箱JohnTsai.work@gmail.com

可能是最早的学习Android N新特性的文章的更多相关文章

  1. Android N 新特性

    2016年5月19日,谷歌在美国加州的山景城举办了 Google I/O 开发者大会中发布.2016年6月,Android N正式命名为“牛轧糖” 本届I/O开发者大会上,Google重点介绍了And ...

  2. 从零开始一起学习SLAM | C++新特性要不要学?

    LAM,C++编程是必备技能.不过,大家在学校里学习的书本一般比较老,主要还是C++98那些老一套. 本文所谓的C++新特性是指C++11及其以后的C++14.C++17增加的新关键字和新语法特性.其 ...

  3. Android O新特性和行为变更总结zz

    https://mp.weixin.qq.com/s/Ezfm-Xaz3fzsaSm0TU5LMw Android O 行为变更https://developer.android.google.cn/ ...

  4. 从开发者角度解析 Android N 新特性!

    大清早看到 Google 官方博客发布 Android N 的开发者预览版,立马从床上跳起来开始仔仔细细的读起来. 从开发者角度来看,Android N 的更新并不算大.网上之前流传的一些 Andro ...

  5. Android 13 新特性及适配指南

    Android 13(API 33)于 2022年8月15日 正式发布(发布时间较往年早了一些),正式版Release源代码也于当日被推送到AOSP Android开源项目. 截止到笔者撰写这篇文章时 ...

  6. Java学习之==>Java8 新特性详解

    一.简介 Java 8 已经发布很久了,很多报道表明Java 8 是一次重大的版本升级.Java 8是 Java 自 Java 5(发布于2004年)之后的最重要的版本.这个版本包含语言.编译器.库. ...

  7. 前端学习笔记 --ES6新特性

    前言 这篇博客是我在b站进行学习es6课程时的笔记总结与补充. 此处贴出up主的教程视频地址:深入解读ES6系列(全18讲) 1.ES6学习之路 1.1 ES6新特性 1. 变量 2. 函数 3. 数 ...

  8. Android R 新特性分析及适配指南

    Android R(Android 11 API 30)于2020年9月9日正式发布,随国内各终端厂商在售Android设备的版本更新升级,应用软件对Android R 版本的兼容适配已迫在眉睫. 对 ...

  9. Android开发学习之路-Android N新特性-多窗口模式

    我们都知道,在最新的Android N系统中,加入了一个新的功能,就是多窗口模式.多窗口模式允许我们在屏幕上显示两个窗口,每个窗口显示的内容不同,也就是说,我们可以一遍看电视剧,一边聊微信. 这里我们 ...

随机推荐

  1. pycharm工具下代码下面显示波浪线的去处方法

    近期安装了python后,发现使用pycharm工具打开代码后发现代码下边会有波浪线的显示:但是该代码语句确实没有错误,通过查询发现了两种方法去掉该波纹的显示,下面就具体说明一下: 方法一: 打开py ...

  2. php_ssh2操作linux

    <?php /** * Created by PhpStorm. * User: Administrator * Date: 2018/9/15 * Time: 14:11 */ header( ...

  3. Math类操作数据

    Math 类位于 java.lang 包中,包含用于执行基本数学运算的方法, Math 类的所有方法都是静态方法,所以使用该类中的方法时,可以直接使用类名.方法名,如: Math.round(); 常 ...

  4. Delphi识别读取验证码

    unit OCR; interface uses Windows, SysUtils, Graphics, Classes, PNGImage, GIFImage, JPEG, Math, Asphy ...

  5. ES6 js中const,var,let区别 今天第一次遇到const定义的变量

    今天第一次遇到const定义的变量,查阅了相关资料整理了这篇文章.主要内容是:js中三种定义变量的方式const, var, let的区别. 1.const定义的变量不可以修改,而且必须初始化. 1 ...

  6. chapter15中使用generator来实现异步化操作的同步化表达的例子

    在p203中作者给了一个例子,我感觉这个例子写的不好,一开始我没有看懂,因为中间有很多细节没有交代,直到看了第二个用generator来实现ajax的例子之后才有所领悟.   所以我把作者给的这个用g ...

  7. 回顾2018年最受欢迎的十四款NoSQL产品

    ​​虽然NoSQL的流行与火起来才短短一年的时间,但是不可否认,现在已经开始了第二代运动.尽管早期的堆栈代码只能算是一种实验,然而现在的系统已经更加的成熟.稳定.不过现在也面临着一个严酷的事实:技术越 ...

  8. Android属性allowBackup安全风险浅析

    1.allowBackup安全风险描述 Android API Level 8及其以上Android系统提供了为应用程序数据的备份和恢复功能,此功能的开关决定于该应用程序中AndroidManifes ...

  9. SQLSERVER 设置默认值

    DECLARE @test intSET @test=nullselect isnull(@test,0)

  10. 前后分离模型之封装 Api 调用

    Ajax 和异步处理 调用 API 访问数据采用的 Ajax 方式,这是一个异步过程,异步过程最基本的处理方式是事件或回调,其实这两种处理方式实现原理差不多,都需要在调用异步过程的时候传入一个在异步过 ...