【转载】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线程通过驱动程序得到上报的输入事件,还要经过处理 ...
随机推荐
- 一 、爬虫的认识与http
一 .爬虫的认识与http 互联网应用架构 一般采用c/s架构,b/s架构或者m/s架构 c/s 即 client server 客户端 服务端 b/s 即 browser server 浏览器 服 ...
- 没想到Spring Boot居然这么耗内存,有点惊讶
Spring Boot总体来说,搭建还是比较容易的,特别是Spring Cloud全家桶,简称亲民微服务,但在发展趋势中,容器化技术已经成熟,面对巨耗内存的Spring Boot,小公司表示用不起.如 ...
- RabbitMQ 备份交换机(alternate-exchange)介绍
RabbitMQ之备份交换机(alternate-exchange) 1.备份交换器,AlternateExchange(AE) 备份交换器是为了实现没有路由到队列的消息,声明交换机的时候添加属性al ...
- asp.net core的AOP记录
序曲:学习编程最好的方式就是敲代码,没有比这个更好的方法,哪怕你看了上百G的视频,都不如你自己敲几行代码更为有效.还有要记得敲完代码然后写一篇随笔来记录一下你所学所想. 什么叫AOP? AOP面向切面 ...
- mysql常用运行原理
MySQL的客户端/服务器架构 MySQL的服务器程序直接和我们存储的数据打交道,然后可以有好多客户端程序连接到这个服务器程序,发送增删改查的请求,然后服务器就响应这些请求,从而操作它维护的数据.和微 ...
- GitLab基本设置-新增用户
场景 Docker Compose部署GitLab服务,搭建自己的代码托管平台(图文教程): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/det ...
- Bootstrap4 本地编译运行
Step1. 获取Bootstrap源代码 https://github.com/twbs/bootstrap Step2. 进入目录并切换npm源 npm --registry https://re ...
- python检查字典元素是否存在类似php中isset()方法
PHP中isset()方法来检查数组元素是否存在,在Python中无对应函数,在Python中一般可以通过异常来处理数组元素不存在的情况,而无须事先检查 Python的编程理念是“包容错误”而不是“严 ...
- mssql sqlserver sql对使用逗号分隔的字符串 转换为数据表的另类方法实现
转自:http://www.maomao365.com/?p=10739 摘要: 下文讲述在sqlserver 对逗号分隔的字符串转换为数据表的另类方法实现,如下所示: 实验环境:sql server ...
- admin配置与Mysql数据库连接
admin配置管理数据库的框架:web版的数据库管理页面初始化数据库: python manage.py makemigrations python manage.py migrate启动项目:(创建 ...