1.3 Android 7.0新特性
2016年8月22日,谷歌正式推出Android 7.0 Nougat(牛轧糖)正式版。Android 7.0中包含一系列的新功
能和改进,它们将会对 Android系统的体验产生重大影响,例如捆绑通知和改进的多任务处理等。下面就
让我们一起来看一下Android 7.0有哪些主要的新特性。
1.3.1 Android 7.0主要新特性概述
1.多窗口模式
Android 7.0中支持多窗口多任务处理,你只要在一个应用程序中长按Overview按钮,就能进入多窗口模式。在大屏幕设备中,同时打开两个应用程序窗口显然可以提升执行效率,例如你可以一边网上冲浪一边发微信给自己的朋友。
2.Data Saver
Android 7.0中引入了Data Saver模式,它是一种流量保护机制。启用Data Saver模式时,系统将拦截后台的数据使用,并在可能的情况下减少前台运行应用使用的数据量,例如限制流媒体服务的码率,下调画质,以及减少缓存等。而通过白名单设置,用户可以让应用避免受到Data Saver模式的影响。
3.改进的Java 8语言支持
Android 7.0可以支持Java 8语言平台,使得Android的Jack编译器现在能够有助于减少系统的冗余代码、降低占用和运行时间。开发者可以直接用Lambda表达式。
4.自定义壁纸
在Android 7.0中,你可以为主屏幕设置壁纸,为锁屏设置另外一张壁纸。这个过程很简单,你只需要选择一张图像作为壁纸,然后就会弹出一个新的提示来让你选择是将它作为主屏壁纸,还是锁屏壁纸。
5.快速回复
Android 7.0还支持通知栏直接回复的功能,例如你收到一条新的Facebook Messenger或者来电,可以直接在通知栏进行输入操作或者接听操作。值得注意的是,这个功能不仅仅限于即时通信应用,它还适用于诸如Twitter这样的社交应用。
6.Daydream VR支持
Android 7.0内置谷歌的全新 VR平台 Daydream。Daydream是一个虚拟现实平台,由Daydream头盔、手柄和智能手机构成,支持Daydream的智能手机要满足一定的硬件要求。
7.后台省电
Android 7.0在后台省电方面也做了不小的改进,屏幕关闭后所有的后台进程都将会被系统限制活动,使这些应用不会在后台中持续唤醒,从而达到省电的目的。此外,Project Svelte功能也在持续地改善,这最大限度地减少了 Android设备中系统和应用所占用的内存。
8.快速设置
下拉通知栏顶部可以展开快捷开关界面。在快捷开关界面右下角有一个“编辑”(EDIT)按钮,点击之后即可自定义添加/删除快捷开关,或拖动进行排序,如图1-26所示。
9.Unicode 9支持和全新的emoji表情符号
Android 7.0支持 Unicode 9,并且新增了大约 70种emoji表情符号。这些表情符号大多数都是人形的,并且提供不同的肤色。
10.Google Assistant
图1-26快速设置
Google Assistant号称融合了谷歌搜索的深度学习技术以及 Google Now的个人信息学习技术,它能够分辨用户的自然语言,并具备联系上下文的理解能力。这样你在向它发出指令时,就像和朋友聊天一样,无须迎合系统而说一些生硬且古板的语句。它能够按照你的谈话内容和习惯来调整自己的推荐建议,最终能够形成一种适合于用户本人的模式,为用户的日常生活提供帮助。
1.3.2多窗口模式
我们在操作PC或者是Mac时有时会一边看着电影,一边通过QQ和朋友聊天,这种多窗口操作的模式同样被引用到了Android系统中。在Android 7.0系统中加入了多窗口模式,这样我们就可以一边和朋友微信聊天,一边浏览网页了。
1.进入多窗口模式
那么如何进入多窗口模式呢?有两种方式:
- 点击手机导航栏最右边的Overview按钮进入Overview列表,长按列表中的活动窗口并拖入到屏幕最上方的分屏提示区域。
- 打开一个程序,长按Overview按钮也可以进入多窗口模式。
多窗口模式的效果如图1-27所示。我们可以通过上下拖动两个窗口中间的白色小横线来改变两个窗口的显示区域大小。如果想要退出多窗口模式,长按Overview按钮就可以了。
图1-27多窗口模式的效果
2.多窗口模式的生命周期
我们创建MoonMultWindow项目,将build.gradle中的targetSdkVersion设置为24,这时MoonMultWindow项目默认是支持多窗口模式的。接下来修改MainActivity,代码如下所示:
在各个声明周期加上了Log日志。当我们长按Overview按钮进入多窗口模式时,会打印出如下日志:
D/MultWindow:onPause
D/MultWindow:onStop
D/MultWindow:onDestroy
D/MultWindow:onCreate
D/MultWindow:onStart
D/MultWindow:onResume
D/MultWindow:onPause
从上面可以看出MainActivity经历了一个重新创建的过程,最终会停留在onPause状态,当我们点击MoonMultWindow项目的窗口时,MainActivity才会获取焦点进入onResume状态。接下来我们长按Overview按钮退出多窗口模式,查看Log:
D/MultWindow:onStop
D/MultWindow:onDestroy
D/MultWindow:onCreate
D/MultWindow:onStart
D/MultWindow:onResume
D/MultWindow:onPause
D/MultWindow:onResume
MainActivity经历了销毁的过程,然后是一个重新恢复的过程,最终会停留在onResume状态。通过上面的Log我们得知了多窗口模式生命周期的规则,那么此前编程的一些惯用方式也会相应地改变。比如,我们在播放视频时进入多窗口模式之际,这个视频应该还是播放的才对,因此不能在onPause方法中关闭视频,而是要在onStop方法中关闭视频,并在onStart方法中恢复视频的播放。
3.禁用多窗口模式
多窗口模式未必适用于所有应用。如果想要禁用多窗口模式,只需要在AndroidManifest.xml中加入如下属性即可:
如果不加此属性,则默认是支持多窗口模式的。我们将该属性设置为false,这时应用就不支持多窗口模式。当我们长按Overview按钮想要进入多窗口模式时,会发现MoonMultWindow项目无法进入多窗口模式,并会弹出 Toast来提醒用户当前应用不支持多窗口模式。但是需要注意的是在targetSdkVersion设置的值小于24时,android:resizeableActivity这一属性不会起作用。面对这一情况,解决方案就是设置应用不支持横竖屏切换,比如将 MainActivity设置为只支持竖屏,如下所示:
这时我们再长按Overview按钮,就会发现无法进入多窗口模式,并弹出了提醒的Toast,说明上面方案的目的达到了。
1.4本章小结
本章我们学习了Android 5.0、Android 6.0和Android 7.0的部分新特性。其中,Android 5.0中的新特性讲得多一些。对于这些新特性,比如RecyclerView,很多开发者还没有在项目中使用过它,我建议还是尽快使用它并熟悉它。另外,对于 Android每个版本的新特性我们都要大概了解一下,并通过项目或者例子尽快地熟悉它们。本章应该算这本书中最简单的一章,后面的内容会越来越深。