- 原文地址:Android Networking in 2019 — Retrofit with Kotlin’s Coroutines
- 原文作者:Navendra Jha
- 译文出自:掘金翻译计划
- 本文永久链接:github.com/xitu/gold-m…
- 译者:feximin
2019 年的 Android 网络 —— Retrofit 与 Kotlin 协程
2018 年,Android 圈发生了许多翻天覆地的变化,尤其是在 Android 网络方面。稳定版本的 Kotlin 协程的发布极大地推动了 Android 在处理多线程方面从 RxJava 到 Kotlin 协程的发展。 本文中,我们将讨论在 Android 中使用 Retrofit2 和 Kotlin 协程 进行网络 API 调用。我们将调用 TMDB API 来获取热门电影列表。
概念我都懂,给我看代码!!
如果你在 Android 网络方面有经验并且在使用 Retrofit 之前进行过网络调用,但可能使用的是 RxJava 而不是 Kotlin 协程,并且你只想看看实现方式,请查看 Github 上的 readme 文件。
Android 网络简述
简而言之,Android 网络或者任何网络的工作方式如下:
- 请求 —— 使用正确的头信息向一个 URL(终端)发出一个 HTTP 请求,如有需要,通常会携带授权的 Key。
- 响应 —— 请求会返回错误或者成功的响应。在成功的情况下,响应会包含终端的内容(通常是 JSON 格式)。
- 解析和存储 —— 解析 JSON 并获取所需的值,然后将其存入数据类中。
Android 中,我们使用:
- Okhttp —— 用于创建具有合适头信息的 HTTP 请求。
- Retrofit —— 发送请求。
- Moshi/ GSON —— 解析 JSON 数据。
- Kotlin 协程 —— 用于发出非阻塞(主线程)的网络请求。
- Picasso / Glide —— 下载网络图片并将其设置给 ImageView。
显然这些只是一些热门的库,也有其他类似的库。此外这些库都是由 Square 公司 的牛人开发的。点击 Square 团队的开源项目 查看更多。
开始吧
Movie Database(TMDb)API 包含所有热门的、即将上映的、正在上映的电影和电视节目列表。这也是最流行的 API 之一。
TMDB API 需要 API 密钥才能请求。为此:
- 在 TMDB 建一个账号
- 按照这里的步骤注册一个 API 密钥。
在版本控制系统中隐藏 API 密钥(可选但推荐)
获取 API 密钥后,按照下述步骤将其在 VCS 中隐藏。
- 将你的密钥添加到根目录下的 local.properties 文件中。
- 在 build.gradle 中用代码来访问密钥。
- 之后在程序中通过 BuildConfig 就可以使用密钥了。
//In local.properties
tmdb_api_key = "xxxxxxxxxxxxxxxxxxxxxxxxxx"
//In build.gradle (Module: app)
buildTypes.each {
Properties properties = new Properties()
properties.load(project.rootProject.file("local.properties").newDataInputStream())
def tmdbApiKey = properties.getProperty("tmdb_api_key", "")
it.buildConfigField 'String',