Android培训
美国上市Android培训机构

400-111-8989

热门课程

在 Kotlin 的 Android 项目中使用 Retrofit

  • 时间:2017-06-26
  • 发布:Android培训
  • 来源:Android教程

在广大 Android 程序员还在琢磨 Java 8 新特性的时候,Google 扔出了这么一个重磅炸弹。无论你是否看好 Kotlin,多一点了解总是没有坏处的。
众所周知,Google 在今年的 Google I/O 上宣布了将 Kotlin 作为 Android 开发的官方支持语言。

今天会介绍如何在用 Kotlin 的 Android 项目中使用 Retrofit(Retrofit 可以说是最受欢迎的网络第三方库,即使是 Google 也在他们的代码示例中用到了它)。

这篇文章中,我们将讨论如果通过 Retrofit + RxJava + Kotlin 在项目中使用 REST API,也就是大家几乎每天都会做到的事 - API 调用。

0. 准备工作

开发环境:Android Studio 3.0 (Preview) (进原文可点)

了解基本的 Kotlin 相关知识。

1. 添加依赖

在 app-module 的 build.gradle

文件中添加依赖:

dependencies {
    // retrofit
    compile "com.squareup.retrofit2:retrofit:2.3.0"
    compile "com.squareup.retrofit2:adapter-rxjava2:2.3.0"
    compile "com.squareup.retrofit2:converter-gson:2.3.0"

    // rxandroid
    compile "io.reactivex.rxjava2:rxandroid:2.0.1"}
2. 创建数据类

在这里我们以 Github API 为例先创建 POJO,用 Kotlin 来创建数据类非常的简单

3. 创建 API Service Interface

这一步里我们创建 API 接口用于发起请求并获取响应。

interface GithubApiService {

    @GET("search/users")
    fun search(@Query("q") query: String,
               @Query("page") page: Int,
               @Query("per_page") perPage: Int): Observable<Result>

    /**     * Companion object to create the GithubApiService     */
    companion object Factory {
        fun create(): GithubApiService {
            val retrofit = Retrofit.Builder()
                    .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                    .addConverterFactory(GsonConverterFactory.create())
                    .baseUrl("https://api.github.com/")
                    .build()

            return retrofit.create(GithubApiService::class.java);
        }
    }}

然后我们可以这样来使用:

val apiService = GithubApiService.create()apiService.search(/* search params go in here */)

注意其中我们用到了 companion object 来修饰 Factory,那么这个 companion object 是干什么用的呢?
首先,在 Kotlin 中使用单例模式非常的简单,也就是用 object:

object SearchRepositoryProvider {
    fun provideSearchRepository(): SearchRepository {
        return SearchRepository()
    }}
object 关键字声明的对象将在第一次被访问时被初始化,也就是懒汉式单例。

而 companion 这个名称可就值得一聊了,最早 companion object 被叫过 class object 和 default object。因为 Java 类中的 static 属性和方法,按逻辑上严格说来其实不是类的一部分。因此,Kotlin 团队就思考怎么来更好的说明这种关系,经过详细的考虑之后选定了 companion。

感兴趣的同学可以看看官方 blog:Upcoming Change: “Class Objects” Rethough  (进原文可点)
因此,Java 中的 static 属性、方法,在 Kotlin 中可以用 companion object 来实现。

4. 创建 Repository

为了保证尽可能的抽象,我们创建一个 repository 来调用上面的 GithubApiService。在我们的这个 demo 中,我们通过 Github API 来查找位于 Lagos 的 Java 程序员:
location:Lagos+language:Java。

代码看起来像这样:

class SearchRepository(val apiService: GithubApiService) {
    fun searchUsers(location: String, language: String): Observable<Result> {
        return apiService.search(query = "location:$location+language:$language")
    }}
5. 用 RxJava 进行请求并响应 API 回调

到这里准备工作就差不多了,就可以用 RxJava 来请求数据并响应数据了:

val repository = SearchRepositoryProvider.provideSearchRepository()repository.searchUsers("Lagos", "Java")
        .observeOn(AndroidSchedulers.mainThread())
        .subscribeOn(Schedulers.io())
        .subscribe ({
            result ->
            Log.d("Result", "There are ${result.items.size} Java developers in Lagos")
        }, { error ->
            error.printStackTrace()
        })
这样,我们就完成了在用 Kotlin 的 Android 项目中使用 Restrofit 调用 RE
上一篇:2017Android 面试回忆录(腾讯/阿里/滴滴/美团...)
下一篇:Android与Js、C#、C、C++等语言交互教程

Android eclipse开发环境配置,Windows 32位/64位系统 Android eclipse环境搭建教程

Android APP开发学习线路图,Android APP 开发要掌握这些技能

Android应用开发实战教程,开始你Android应用开发的第一步

如何为安卓开发搭建一个持续集成(CI)服务器

选择城市和中心
贵州省

广西省

海南省

台湾