2016 年 Google I/O 大会开放注册之后,Google 出人意料地正式发布了其最新移动操作系统Android N的开发者预览版。各大网友齐呼:这速度也太快了吧!因这次的预览提前了十周,作为最新版本的Android操作系统,尽管还只是开发者预览版,但是Android N中包含了诸多值得关注的新特性。
APUS 将率先适配Android N。下面,APUS产品专家就为安卓用户们全方位解析Android N新特性。
-
多窗口模式 (Multi-Window Support)
Android N允许手持设备(智能手机或者平板电脑)同时运行两个窗口,可以在纵向模式呈上下排列,也可以在横向模式中左右排列。
Android N中提供了两个切换到多窗口模式的方法:一是,用户可在最近任务的概览界面,长按支持多窗口模式的应用标题不放,拖拽到屏幕顶部,这时该应用会切换到多窗口模式,屏幕底部继续显示其他任务的概览界面;二是,如果当前的应用可以支持多窗口模式,长按导航栏的窗口按钮即可将当前应用切换到多窗口模式,屏幕底部显示其他任务的概览界面;用户可以拖动两窗口之间的分割线,使之任意变大变小。
不过需要注意的是,目前Android N的分屏功能只支持为数不多的需要持续并行显示的应用,如内容类应用(视频,工具书),工具类应用(计时,流量监控);但随着开发者的逐渐适配,越来越多的热门应用应该都会跟进。
多窗口模式支持拖放功能。主要用途是在窗口之间传输数据或其他种类信息。对于开发者来说如果应用需要支持多窗口模式,要对这部分的界面显示布局进行详细设计和测试,以匹配不同的高宽比。Android N开发者预览版自带的Google Play应用商店就在多窗口模式出现了适配的问题。
2.通知机制 (Notifications)
Android 从4.1开始就支持了通知的扩展样式,也就是我们通常所说的多行通知栏,除了最顶部的通知扩展样式会默认展开之外,其他通知即使支持扩展样式默认也是收起的。想要展开只有两个办法:把该通知以上所有的通知全部清除,使之成为排名第一的通知,从而自动展开;或 用一个鲜为人知的下滑手势展开;所以,对于广大安卓开发者而言,支持扩展样式通知的效果其实是不尽如人意的,原因就是易用性不足从而导致曝光较少。
这个问题终于在Android N中获得了初步的解决。在上图中Gmail的通知顶部有一个箭头,点击即可切换收起状态和展开状态。如果没有箭头则表示这条通知是无法展开的(例如USB Debugging那条通知)。
其次,Android N中附带图标通知的视觉样式,与之前相比有很大变化。整体上来看样式更加规整,界面布局以信息为中心。通知的来源、接收通知的时间、标题和描述都集中在左侧,通过颜色和透明度的区分让重要信息一目了解。应用图标统一右置,与左侧信息形成有效的分隔。
Android N 可以根据来源将接收到的通知归拢在一起,而不是像现在这样四处散落。从以上四张图可以看出通知群体中的消息既可以全部收起,也可以分别展开,甚至全部展开,每个子通知都可以拥有单独的操作行为。除此之外,Android N的通知栏,可以直接对消息进行回复,虽然此前介绍图片上展示的Hangout现在还没有支持通知栏直接回复,但API已经开放。今后简单的回复和标记行为就可以在通知栏上直接完成了。
3.流量节省程序(Data Saver)
Android N中提供了一个全局的流量控制机制,目的自然是为了防止应用程序在后台恶意偷跑宝贵的移动流量。这个功能是默认关闭的,一旦开启之后除了GMS(Google Mobile Service,谷歌移动服务)外,其他应用都是默认不允许在后台使用超过前台所消耗的移动流量。
对于开发者而言,在Android N系统中要主动检查用户是否开启了流量节省程序,并注意节约后台时的数据流量消耗。如果确实需要在后台使用数据流量,也要注意引导用户放开对本应用的限制。
4.Android框架中提供部分ICU4J API支持
ICU4J(International Components for Unicode)是由IBM维护,基于IBM公共许可证分发的免费开源Unicode工具库,开发者可以使用ICU4J根据各地的风俗和语言习惯,实现对数字、货币、时间、日期、和消息的格式化、解析,对字符串进行大小写转换、整理、搜索和排序等功能。
但由于Android N内置了部分ICU4J API,如果你的安卓应用只使用了这部分的API,那今后就可以不再集成庞大的高达10MB左右的ICU4J库了。开发者可以在Google Play上针对使用Android N的用户提供不含ICU4J的轻量安装包,而针对更早版本系统提供包含ICU4J的完整安装包。
5.开始支持Java 8
从Android N开始,开发者可以使用Java 8来编写应用程序,目前Android N对于Java 8的支持并不全面,但这依然是一个重量级的更新。目前支持以下内容:
l默认和静态接口方法:使开发者可以修改接口而不破坏原来实现类的结构;
lLambda表达式:不仅让代码变得更简单、更可读、最重要的是代码量也随之减少很多;
l重复注解:允许在同一申明类型(类,属性,或方法)的多次使用同一个注解,提高可读性;
l反射及语言相关的API;
l公用工具API;
为了使用Java8同时还需要引入Jack编译工具链,与传统编译工具链相比的优势在于全部开源,编译速度更快。Jack编译工具链完整地包含了重打包,压缩,混淆,MultiDex工具,使用Jack编译工具链之后将不需要再依赖类似ProGuard和Jarjar之类的单独组件。
Jack编译工具链向下支持到Android 2.3应用的编译。同时Jack也是一套面向未来的编译工具链,未来预计还会支持Java 9,以及Java X。
开发者也可以继续使用Java7开发针对Android N的应用程序,但是编译时依然要使用JDK8。Jack编译工具链虽然非常诱人,但是对于开发者来说依然要做好充分的准备和测试工作。
6.增强多语言支持 (Language and Locale)
在Android N之前的系统中,多语言的匹配略显粗暴,例如一个讲法语(瑞士)的用户,使用一个包含默认英语(美国)和法语(法国)资源的应用。匹配顺序为:
a)法语(瑞士)-->匹配失败;
b)法语->匹配失败;
c)使用默认->英语;
但是这样的匹配,并没有考虑到用户懂不懂英语,只是因为英语是默认语言。而在Android N中,语言资源的匹配顺序优化为:
a)法语(瑞士)->匹配失败;
b)法语->匹配失败;
c)查找法语的子项->法语(法国);
d)使用法语(法国);
这样匹配方式的好处在于,在没有法语(瑞士)语言资源的情况下,法语(法国)的用户接受度必然高于英语(美国);
同时,海外很多国家的公民同时掌握多种语言。Android N允许用户用户选择多种系统语言,并基于上述的多语言匹配顺序的优化,用户使用各种移动应用时看到自己母语的概率也会有所提高。
对于开发者来说,虽然Android N提供了容错能力更强的语言匹配方案,但这是以延长匹配时间为代价的,因此为了加快语言匹配速度,提高资源可维护性,应该将各种语言资源尽量提升到同源语目录下。例如将es-US和es-ES合并到es-419目录下。Android N提供了接口获取用户设置的语言列表,应用在显示多语言内容时,应该考虑到语言列表的因素以提升用户体验。例如对于提供网页翻译功能的浏览器来说,如果用户显示了语言列表中任意一种语言,就不应该再提示用户翻译。
7.更加省电 (Efficiency)
在安卓6.0中,安卓引入了新的省电机制Doze,当时针对的场景只是当手机同时处于灭屏以及静止状态来减少应用对电量的消耗。但是在实际使用中手机灭屏时不仅仅是处于静止状态,还有很多情况下是处于运动状态的,例如步行,坐车,坐飞机等情况,这时Doze就不会生效。比如你出门在外把手机放在裤子口袋,若是Android 6.0的Doze则会认为用户还可能会使用设备而不启动后台省电管理机制。Android N在此基础上更进了一步,将Doze的作用范围扩展到手机灭屏的所有时间段,无论是处于静止还是运动,省电效果也有望进一步提高。
怎么样?Android N的新变化是不是很惊艳?面对这么多心水的功能,就让我们耐心等待Android N正式版的更新吧!APUS用户系统将率先适配Android N,为更多全球用户带去最佳的移动互联网接入体验。