【转载】Android N 完全不同以往的四个新特性
Google最近发布了Android的下一个版本,Android N的开发者预览版。此次预览版,可以让我们开发者在正式发布之前就测试代码,包括一些新的API,甚至于也可以提前反馈那些对于我们来说有些困扰的变化。这次的发布版本只酝酿了几个月,但是其中一些令人惊奇的功能已经看起来很棒了。相信你也一样对此感到非常兴奋!
接下来,列出一些我们迫不及待想要上手的新变化。
1. 支持Java 8语言特性
通常来讲,Java在最性感的语言当中根本就排不上号。更不用说,那些还仅仅支持Java 7部分特性的平台了,要知道它已经发布5年了。我们急需一个更加现代化的Java,每个人都应该已经意识到了。
当Google宣布Android将基于OpenJDK的时候,我们就已经知道这样的变化就要来了。这意味着,我们将要比原先期望的更早体验到Java 8的新特性。
如果你打算使用 Jack toolchain(一个Google官方的编译工具,可以自动打包、压缩、混淆以及multidexes你的代码)构建你的项目,那么你可以像下面这个示例一样兼容Java 8:
android {
defaultConfig {
jackOptions {
enabled true
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
这样就可以使 Jack (下同)识别出部分Java 8的语言特性。不用担心,你感兴趣的部分都在里面,比如:
- 默认静态接口方法
- Lambda表达式
- 可重用的注解
好吧,其实我对可重用的注解不是很感冒,不过它已经包含在这些特性里面了。如果你要写更多的功能性代码,你应该会需要用到。想像一下,当你不需要过多考虑有关对象创建的所有listener、Adapter等等其他东西的时候,你的代码会变得多么具有可读性。
你也可以用 Lambda表达式直接指定一个OnClickListener,就像这段代码一样:
button.onClick(
v -> Snackbar.make(v, "Hello sweet lambdas", Snackbar.LENGTH_LONG).show()
);
如果你对Lambda表达式不是很熟悉,那么可以参考一下 this helpful cheat sheet about Java 8 features and best practices.
而且,Lambda表达式还会以各种方式最低支持到Android 2.3版本。这都要得益于Jack 编译器在两年前就已经开始为此考虑。 把 Jack
作为默认编译器,也会为我们构建的时间带来诸多裨益。 Jack
会跳过常规的Java字节码编译,并直接生成dex文件。当然,一些外部引用的library,都会在dex文件上生效或更新,而不是字节码文件。
而且可以预见,Jack
也有望全面增加支持其他一些已经得到广泛应用的注解运行器,比如:Dagger、Dagger2、ButterKnife,这些项目本身也正变的越来越受欢迎 。
2. 支持应用内多窗口
去年九月,iOS 9已经支持了多窗口。对于Android来说,这也只是个时间问题。如果你有一个大点屏幕的设备,你可能会一边看YouTube,一边在Facebook上聊天!这样的情况真的会出现!
但是,这对开发者来说,意味着什么呢?Activity的生命周期会变得非常复杂,开发者又要花费时间去熟悉。如果我们再把Fragment的生命周期加上去,那么光是为了解决这些View生命周期的工作量都会大大增加。
即使是现在,也有很多人在走捷径,锁定屏幕方向,避免去处理这些活动的生命周期状态。这样一来,在两个方向上缩放UI都会更加轻松。
看看到底会有多少开发者会重新考虑如何锁定屏幕方向以使他们的App可以支持多窗口,这应该会是一件有趣的事。Activity and Fragment,我非常高兴最终可以看到他们的生命周期图表变得更加完善。
3.电量管理的改进:Doze
Doze
就是用来管理Android设备电量的。当你的手机还没有同时进行较多任务的时候,它就可以起作用,限制应用程序对各种资源的访问,以节省电量。
其实在Android M上已经有Doze
了,但是它只能在设备没有使用的情况下才起作用,比如就放在桌子上不动的时候。
现在,在Android N上,当设备正在移动且屏幕是关闭的时候,Doze
也会起作用。
对于用户而言,这意味着一个额外的好处——更长的电池寿命。对于开发者来说,在这也会更多的影响用户的前提下,就要小心你的应用会受到Doze
的限制。最明显的就是,对于CPU和网络的限制,可能会让你感到懊恼。不仅如此,Doze
同样也会影响wakelock,闹钟,同步功能,还有GPS。
虽然这样可能会使你的代码稍微复杂一些,但这也是一个巨大的用户体验的提升。更长的电池寿命意味着我们可以有更多的精力去做更有用,更有影响力的事情。比如:糖果消消乐!
4.通知
最后要说明的并非最不重要。通知经过了改版,现在所有来自同一应用的通知,都可以分组归类在一起。而且这里也提供给用户可以直接输入回复应用的选项。
看起来通知确实是得到了非常不错的改进,特别是对于消息类的应用!用户在应用之间的上下文切换会变少,这对于Android的生态系统也是一大裨益。
如果你想要了解关于这些新变化的更多细节,或者想要亲自上手Android N预览版。那么 这份资料 可以指导你怎样去做。顺便提一句,Android Studio 2.1 preview(译者注:原文链接已失效,正式版已出,此处换上官网链接) 也已经发布,并且支持Android N。好吧,我们在一开始就得到了全部工具的支持。
你最感兴趣的Android N特性是什么?我还漏掉什么了吗?在下面的评论里分享你的想法,并在预览文档里查证。伟大的时代即将来临!
译者注:谷歌官方推出的multidex兼容包,配合AndroidStudio实现了一个APK包含多个dex的功能。
译文链接:http://www.codeceo.com/article/android-n-4-new-features.html
英文原文:4 Reasons Why Android N is a Game Changer for Developers
翻译作者:码农网 – 温迪
[ 转载必须在正文中标注并保留原文链接、译文链接和译者等信息。]
【转载】Android N 完全不同以往的四个新特性的更多相关文章
- 转载 精进不休 .NET 4.0 (5) - C# 4.0 新特性之并行运算(Parallel) https://www.cnblogs.com/webabcd/archive/2010/06/03/1750449.html
精进不休 .NET 4.0 (5) - C# 4.0 新特性之并行运算(Parallel) 介绍C# 4.0 的新特性之并行运算 Parallel.For - for 循环的并行运算 Parall ...
- 了解与建设有中国特色的Android M&N(Android6.0和7.0新特性分析)
http://geek.csdn.NET/news/detail/110434 Android N已经发布有段时间,甚至马上都要发布android 7.1,相信不少玩机爱好者已经刷入最新的Androi ...
- 可能是最早的学习Android N新特性的文章
可能是最早的学习Android N新特性的文章 Google在今天放出了Android N开发者预览版.Android N支持Nexus6及以上的设备.5太子Nexus5不再得到更新. Android ...
- Android 8.0 新特性
Android 8.0 (Android Oreo(奥利奥))新特性介绍 通知渠道 - Notification Channels 通知渠道是由应用自行定义的通知内容类别,借助渠道,开发者可以让用户对 ...
- 即将到来的Android N,将具备这些新特性
原文转自:http://www.leiphone.com/news/201602/pSRQAuAjMFJITqHe.html 原创 訾竣喆 即将到来的Android N,将具备这些新特 ...
- [Android]使用RecyclerView替代ListView(四:SeizeRecyclerView)
以下内容为原创,欢迎转载,转载请注明 来自天天博客:<> [Android]使用RecyclerView替代ListView(四:SeizeRecyclerView) 在RecyclerV ...
- 我的Android进阶之旅------>Android颜色值(RGB)所支持的四种常见形式
Android中颜色值是通过红(Red).绿(Green).蓝(Blue)三原色,以及一个透明度(Alpha)值来表示的,颜色值总是以井号(#)开头,接下来就是Alpha-Red-Green-Blue ...
- [Learn Android Studio 汉化教程]第四章 : Refactoring Code
[Learn Android Studio 汉化教程]第四章 : Refactoring Code 第四章 Refactoring Code 重构代码 在Android Studio中开发,解决 ...
- Android系统--输入系统(十四)Dispatcher线程情景分析_dispatch前处理
Android系统--输入系统(十四)Dispatcher线程情景分析_dispatch前处理 1. 回顾 我们知道Android输入系统是Reader线程通过驱动程序得到上报的输入事件,还要经过处理 ...
随机推荐
- k8s~跨namespace的service相互访问
在k8s里,你可以通过服务名去访问相同namespace里的服务,然后服务可以解析到对应的pod,从而再由pod转到对应的容器里,我们可以认为这个过程有两个port的概念,service port 就 ...
- 微信小程序APP生命周期
小程序APP生命周期需要先从app.js这个文件开始,App() 必须在 app.js 中调用,必须调用且只能调用一次,app.js中定义了一些应用的生命周期函数 onLaunch----当小程序初始 ...
- centos_mysql 安装脚本
#!/bin/bash env echo "Download msyql5.7 rpm..." sudo yum install wget wget -i -c http://de ...
- easybcd误删Win10启动项,UEFI恢复引导
参考文章https://blog.csdn.net/A_Sen_A/article/details/89545311 想给电脑安Ubuntu双系统,期间根据一些不靠谱的文章用了easybcd软件,Ub ...
- 物联网架构_对AWS的Greengrass的认识与理解
物联网架构_对AWS的Greengrass的认识与理解 一,前言: 这段时间有许多的收获,分析,还有总结,其中包括新系统的设计与开发,以及其中新技术的踩坑等等等. 但是最近真的很忙,项目的推进,面试工 ...
- .netcore3.0 System.Text.Json 日期格式化
.netcore3.0 的json格式化不再默认使用Newtonsoft.Json,而是使用自带的System.Text.Json来处理. 理由是System.Text.Json 依赖更少,效率更高. ...
- 精通awk系列(3):铺垫知识:读取文件的几种方式
回到: Linux系列文章 Shell系列文章 Awk系列文章 读取文件的几种方式 读取文件有如下几种常见的方式: 下面使用Shell的read命令来演示前4种读取文件的方式(第五种按字节数读取的方式 ...
- asp.net允许跨域配置web.config
<configuration> <system.webServer> <modules> <add name="CultureAwareHttpMo ...
- Word文档转为MD
最近整理近年的一些知识笔记,需要将一些之前用word写好的文档转为markdown格式,主要的方法是先将word转换为html格式,再将html转换为markdown格式. Step1. Word t ...
- MySQL数据库~~~~pymysql 连接 MySQL的客户端
import pymysql conn = pymysql.connect( host = '127.0.0.1', # 主机 port = 3306, # 端口号 user = 'root', # ...