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也有望全面增加支持其他一些已经得到广泛应用的注解运行器,比如:DaggerDagger2ButterKnife,这些项目本身也正变的越来越受欢迎 。

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 完全不同以往的四个新特性的更多相关文章

  1. 转载 精进不休 .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 ...

  2. 了解与建设有中国特色的Android M&N(Android6.0和7.0新特性分析)

    http://geek.csdn.NET/news/detail/110434 Android N已经发布有段时间,甚至马上都要发布android 7.1,相信不少玩机爱好者已经刷入最新的Androi ...

  3. 可能是最早的学习Android N新特性的文章

    可能是最早的学习Android N新特性的文章 Google在今天放出了Android N开发者预览版.Android N支持Nexus6及以上的设备.5太子Nexus5不再得到更新. Android ...

  4. Android 8.0 新特性

    Android 8.0 (Android Oreo(奥利奥))新特性介绍 通知渠道 - Notification Channels 通知渠道是由应用自行定义的通知内容类别,借助渠道,开发者可以让用户对 ...

  5. 即将到来的Android N,将具备这些新特性

    原文转自:http://www.leiphone.com/news/201602/pSRQAuAjMFJITqHe.html         原创 訾竣喆 即将到来的Android N,将具备这些新特 ...

  6. [Android]使用RecyclerView替代ListView(四:SeizeRecyclerView)

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:<> [Android]使用RecyclerView替代ListView(四:SeizeRecyclerView) 在RecyclerV ...

  7. 我的Android进阶之旅------>Android颜色值(RGB)所支持的四种常见形式

    Android中颜色值是通过红(Red).绿(Green).蓝(Blue)三原色,以及一个透明度(Alpha)值来表示的,颜色值总是以井号(#)开头,接下来就是Alpha-Red-Green-Blue ...

  8. [Learn Android Studio 汉化教程]第四章 : Refactoring Code

    [Learn Android Studio 汉化教程]第四章 : Refactoring Code 第四章 Refactoring Code    重构代码 在Android Studio中开发,解决 ...

  9. Android系统--输入系统(十四)Dispatcher线程情景分析_dispatch前处理

    Android系统--输入系统(十四)Dispatcher线程情景分析_dispatch前处理 1. 回顾 我们知道Android输入系统是Reader线程通过驱动程序得到上报的输入事件,还要经过处理 ...

随机推荐

  1. Java 商户管理系统 客户管理 库存管理 销售报表 SSM项目源码

    系统介绍: 1.系统采用主流的 SSM 框架 jsp JSTL bootstrap html5 (PC浏览器使用) 2.springmvc +spring4.3.7+ mybaits3.3  SSM ...

  2. XAF Architecture XAF架构

    Applications built with the eXpressApp Framework are comprised of several functional blocks. The dia ...

  3. adb shell常用命令

    一.文件操作相关命令 1.文件操作命令 子命令 参数 说明 cd 无 进入目录 cat [-beflnstuv] [-B bsize] [file...] 查看文件内容-n:显示行号-b:显示行号,但 ...

  4. sqlserver日志处理不当而造成的隐患

    sqlserver日志处理不当而造成的隐患 事故背景:一大早还在路上,群里陆续有人反馈系统一直报错 “Unknown error 258”,后来查询日志发现错误日志 第一反应是不是数据库连接不够用了? ...

  5. 林克的小本本之——记一些基础的linux命令

    查看shell cat /etc/shells 查看系统支持的shell echo $SHELL 查看目前正在使用的shell 快捷键 Ctrl+a 跳到行首 Ctrl+e 跳到行尾 Ctrl+u 删 ...

  6. 安装Android Studio (一)同时配置Android Studio环境变量

    安装Android Studio 安装android 一直next就行了.这以步需要10分钟左右. 我的安卓SDK在这个目录 C:\Users\user\AppData\Local\Android\s ...

  7. LeetCode 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树

    第108题 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1. 示例: 给定有序数组: [-10 ...

  8. AWS SNS 创建 订阅 发布

    AWS SNS 创建 订阅 发布 20180810 chenxin 为实现短信报警,添加以下SNS的短信(SMS)订阅 选择主题,创建新主题,或修改原有主题 进入对应主题后,选择创建订阅,选择SMS, ...

  9. linux 启动jar包 指定yml配置文件和输入日志文件

    命令为: nohup java -jar project.jar  --spring.config.location=/home/project-conf/application.yml >  ...

  10. Cocos2d-x.3.0开发环境搭建之—— 极简式环境搭建

    配置:win7 + VS2012 + Cocos2d-x.3.0 + Cocos Studio v1.4.0.1 使用此法可以方便的创建Cocos2d-x项目.如果需要运行Cocos2d-x引擎自带的 ...