2018 年,Android 圈发生了许多翻天覆地的变化,尤其是在 Android 网络方面。稳定版本的 Kotlin 协程的发布极大地推动了 Android 在处理多线程方面从 RxJava 到 Kotlin 协程的发展。 本文中,我们将讨论在 Android 中使用 Retrofit2 和 Kotlin 协程 进行网络 API 调用。我们将调用 TMDB API 来获取热门电影列表。
概念我都懂,给我看代码!!
如果你在 Android 网络方面有经验并且在使用 Retrofit 之前进行过网络调用,但可能使用的是 RxJava 而不是 Kotlin 协程。
Android 网络简述
简而言之,Android 网络或者任何网络的工作方式如下:
- 请求 —— 使用正确的头信息向一个 URL(终端)发出一个 HTTP 请求,如有需要,通常会携带授权的 Key。
- 响应 —— 请求会返回错误或者成功的响应。在成功的情况下,响应会包含终端的内容(通常是 JSON 格式)。
- 解析和存储 —— 解析 JSON 并获取所需的值,然后将其存入数据类中。
Android 中,我们使用:
- Okhttp —— 用于创建具有合适头信息的 HTTP 请求。
- Retrofit —— 发送请求。
- Moshi/ GSON —— 解析 JSON 数据。
- Kotlin 协程 —— 用于发出非阻塞(主线程)的网络请求。
- Picasso / Glide —— 下载网络图片并将其设置给 ImageView。
显然这些只是一些热门的库,也有其他类似的库。此外这些库都是由 Square 公司 的牛人开发的。
开始吧
Movie Database(TMDb)API 包含所有热门的、即将上映的、正在上映的电影和电视节目列表。这也是最流行的 API 之一。
TMDB API 需要 API 密钥才能请求。为此:
- 在 TMDB 建一个账号