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. 分享一个web安全学习站点

    大神建议: https://blog.knownsec.com/Knownsec_RD_Checklist/v3.0.html#FMID_1218170279FM https://websec.rea ...

  2. .Net Core组件化视图(部分视图)

    .Net Core组件化视图(部分视图) 1.背景 1.以前我们使用.Net的时候使用部分视图的方式在,.Net Core 中能在单独处理逻辑的部分视图没有了,但是我们还是想使用现在的.Net Cor ...

  3. VUE程序调试的方法

    目录 VUE程序调试的方法 1.写本文的背景 2.调试与测试 3.Console调试法 3.1 添加console.log指令 3.2 调出温度界面如下 3.3 Google浏览器的Console窗口 ...

  4. How to: Use XPO Upcasting in XAF 如何:在 XAF 中使用 XPO 强制转换

    In this topic, you will learn how to use the Upcasting feature of XPO in XAF. It is useful when you ...

  5. phpmyadmin 4.8.1 远程文件包含漏洞(CVE-2018-12613)

    漏洞详情 范围 phpMyAdmin 4.8.0和4.8.1 原理 首先在index.php 50-63行代码 $target_blacklist = array ( 'import.php', 'e ...

  6. TSC打印机防重码在线检测系统

    条码标签作为产品的一个身份标识,被应用得越来越普及,但随着使用量的增大,在打印条码流水号的过程中,偶尔会出现打印重复号码的标签出现,这样对产品生产及管理过程中会产生极大的混乱,会收到严重的客诉及返工, ...

  7. Xcode真机运行报错iPhone has denied the launch request

    1.打开钥匙串 ->Apple Worldwide Developer Relations Certification Authority ->双击 并点击信任->选择使用系统默认2 ...

  8. 图片切换器(ImageSwitcher)的功能与用法

    ImageSwitcher继承了ViewSwitcher,因此它具有与ViewSwitcher相同的特征:可以在切换View组件时使用动画效果.ImageSwitcher继承了ViewSwitcher ...

  9. InnoDB On-Disk Structures(三)--Tablespaces (转载)

    转载.节选于 https://dev.mysql.com/doc/refman/8.0/en/innodb-tablespace.html This section covers topics rel ...

  10. s3c2440裸机-清bss原理及实现

    1.清bss的引入(为什么要清bss) 我们先举个例子: #include "s3c2440_soc.h" #include "uart.h" char g_C ...