可能是最早的学习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原创。著作权由本人保留。
如需转载,请在显著位置注明出处。
欢迎交流讨论。