做者 / Chet Haase, Android 开发技术推广工程师html
欢迎你们来到 Now in Android 栏目,本栏目将专一于为开发者们提供近期值得关注的 Android 开发热点内容。java
可是咱们相信,开发者们会体验到一种不同的知足感: 知道事情已经完成,知道本身手上的 API 都是稳定的,并能够开始使用它构建应用。并且不少时候开发者还能直接得到源代码,这会带来巨大的优点。同时您也知道,如今用户会开始获取和使用这个版本。android
正式发布的 Android 10 (包括 AOSP、开发者下载版及其余渠道),包含了咱们一直努力构建的全部功能的最终版本: 手势导航、隐私功能、实时字幕、智能通知、深色主题、ART 优化等等。您能够在 Android 开发者博客中查看概述,或者直接进入开发者网站阅读详细文档并下载所需的资源。git
大量 AndroidX 库刚刚发了稳定版本,其中包括许多基础模块,一些架构组件以及媒体库:github
AndroidX 版本页面最近变得愈来愈好用了。若是您只关心稳定版本 (或是只想了解最新的 Alpha 版本),只需扫一眼页面顶部给出的分类连接便可。编程
咱们的 Android 示例库就处于这个状态。刚开始时,整理的工做量不值一提,可是在通过了数百个项目以后,状况开始变得混乱起来。android-studio
在你们的共同努力下,咱们已经至关完全的整理了 Android 示例代码库,如今您能够在同一个地方找到它们: github.com/android,这些例子如今被分类为 17 个小 repo 组,方便您更轻松地在相关课题中找到样例项目。咱们的示例代码仓库也接受开发者们的 Pull Request,欢迎你们尝试并积极贡献。安全
Kotlin 之因此在 Android 开发者中如此流行,首先是由于它是一种很好的语言,一样值得一提的是它与 Java 语言的强大互操做性。毕竟,大多数 Android 项目都是已经成型的代码库,而 Android SDK 是一组 Java API,所以,不一样语言之间的流畅集成很是重要。bash
您在添加 Kotlin 代码时须要注意一些细节,这些细节会让您在未来更容易使用 Java 代码。为了让你们更好地理解这些细节知识,Nicole Borrelli 最近发布了这个 codelab,来帮助那些但愿流畅使用 Java 代码的 Kotlin 开发者。架构
开发者们讨厌样板代码。咱们一辈子中能输入的字符数量是有限的,为何要在没必要要的语法和表达式上浪费生命?
在深受困扰的开发者们看来,Android 开发中不断出现的样板代码中最恼人的就是 findViewById()。每当您要引用层次结构中的视图时,都必须使用正确的视图 ID,并重复输入类型信息。
您最终会写出这样的代码:
var b: Button = findViewById(R.id.button23)
// or
var b = findViewById<Button>(R.id.button23)
// or even
var b = findViewById(R.id.button23) as Button
复制代码
单独看起来,须要的代码量并不不少,可是当您必须对每一个视图都这么处理的时候,这个工做量就不能视若无睹了。
一种流行的解决方法是使用 ButterKnife 代码库,让您能这样注解变量:
@BindView(R.id.button23)
lateinit var button: Button
复制代码
开发者们还会使用数据绑定来实现相似的效果,这种作法的本质是,在与布局文件关联的绑定对象中为视图建立变量。
不过在架构组件的最新进展中,咱们谈到了 Jake Wharton 正在研究的一种新机制: 视图绑定 (View Binding)。视图绑定更接近数据绑定,从而避免了 ButterKnife 的注解处理方法。用 Jake 的话说,"这是 findViewById 和完整数据绑定的中间地带。"
要使用视图绑定,首先须要在 gradle 构建中启用它:
android {
viewBinding.enabled = true
}
复制代码
而后,在您的代码中就能够得到对绑定对象的引用,而且直接经过绑定对象里的字段访问视图。它的工做方式与数据绑定相似,可是不须要专门的数据资源文件,而只需使用普通的 XML 布局文件便可。
视图绑定从 Android Studio 3.6 Canary 11 能够开始体验。
Android 10 带来的一个重要特性是分区外部存储 (Scoped External Storage),旨在限制应用对不是本身建立的文件的访问权限,从而保护用户的数据安全与隐私。
简而言之: 应用能够随时访问本身建立的文件,不须要受权。可是,若是要访问其余应用建立的照片/视频/音频文件,则必须得到 READ_EXTERNAL_STORAGE 权限。对于其余文件类型,则必须使用 Storage Access Framework 来让用户选取文件。
咱们准备了详细的文档,涵盖了处理外部存储文件的 API 和作法。但若是您是刚接触外部文件存储的话,阅读文档里的说明可能会须要多花费一些精力,咱们也会努力迭代文档以让内容更加易懂。与此同时,Nicole Borrelli 在 Github 上的 Storage Samples 项目中建立了 MediaStore 示例来帮助您快速上手。示例里有展现应该如何请求适当权限访问文件,而后使用适当的 MediaStore API 来实际加载它们。
在咱们近期连载发布 2019 Android 开发者峰会中文视频中也有一个关于分区存储的演讲,分享了一些最新的更新和接下来 Android 版本里的改变。
您也许已经据说过 Kotlin 了,但您可能一直还没上手使用它。咱们也已经准备了 Udacity 的课程来帮助您学习 Kotlin 以及使用 Kotlin 开发 Android 应用。
但若是您不是很喜欢看视频,或者只是想按照本身的节奏来学习 Kotlin 的话,咱们从上述课程中提炼出了核心内容,并作成了一系列的 codelab 供您上手尝试。
《Kotlin 编程新手营》是一套完整的课程 (由一系列 codelab 组成),它将引导您学习 Kotlin 的许多基础知识。课程假定您已经熟悉面向对象编程,并会基于此向您介绍 Kotlin 的一系列概念,如函数、类和 lambda 等。
《Android Kotlin 基础》则是一套针对 Android 开发的课程 (一样由一系列 codelab 组成),这套课程使用 Kotlin 语言来说授 Android 开发中的许多重要概念。包括 Android 的一些基础知识,例如布局和生命周期;还包括全部 Android 开发者应该学习和使用的最新实践案例,例如 RecyclerView 和架构组件。请注意,该课程不会把教学重点放在 Kotlin 语言自己,所以建议您先完成《Kotlin 编程新手营》课程。
别忘了上手试试 Android 10 的分区存储功能,也但愿您体验一下咱们的 Kotlin codelabs 系列课程。谢谢对 Now In Android 栏目的支持,祝你们在 Android 开发路上一切顺心!
点击这里提交产品反馈建议