6.kotlin安卓实践课程-用kotlin写第一个activity对应P层


简介

主要会通过安卓实战来讲解kotlin语法和实际应用,本教程设及知识点包括框架模式mvp+mvvm, Databinding(数据绑定框架),Dagger2(依赖注入框架),DeepLink(页面路由框架),Rxjava,RxAndroid(异步操作框架),Retrofit,Okhtttp等,不过本教程重点在kotlin所以这些框架需要了解可自行百度。

针对人群:Android中级以上,kotlin入门


上一篇文章讲了MainActivity的代码构成

MainActivity当中有一段代码

 floatingButton.setOnClickListener {
      mPresenter.getRandom("Android")
    }

它就是通过P层去请求网络,具体的定义我们先看看RandomPresenter的构成

 /**
 * Created by bigman on 18-05-18.
 */
class RandomPresenter
@Inject constructor(private val mModel: RandomModel,
                    private val mView: RandomContract.View) : RandomContract.Presenter, BasePresenter() {
    override fun getRandom(type: String) {
        addSubscription(
                 mModel.getRandom(type)
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe({ res ->
                    if (!res.error) {
                        mView.onRandom(res.results[0])
                    }
                }, {}))
    }
}
  1. 首先看看这个addSubscription是个什么方法
/**
 * Created by bigman on 18-05-18.
 */
open class BasePresenter {
    var compositeSubscription = CompositeSubscription()

    protected fun addSubscription(subscription: Subscription) {
        compositeSubscription.add(subscription)
    }

     fun unSubscribe() {
        if(compositeSubscription.hasSubscriptions()){
            compositeSubscription.unsubscribe()
        }
    }
}

每个Presenter都要继承于BasePresenter,然后由BasePresenter里面的CompositeSubscription对象统一管理订阅者的订阅和解绑(rxjava2实现就是观察者模式,不了解rxjava2的可以去学习一下rxjava2)

语法点:继承
open class BasePresenter 

由于kotlin中所有类和方法默认都是final的,不能直接继承或重写,需要继承的类或类中要重写的方法都应当在定义时添加open关键字

  1. 然后又回到RandomPresenter
 mModel.getRandom(type)
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe({ res ->
                    if (!res.error) {
                        mView.onRandom(res.results[0])
                    }
                }, {})

mModel接下来几节会说到,我们主要看看这个链式调用,这是一个基本的rx异步操作,通过mModel做网络请求,然后在安卓主线程观察一旦有结果返回就通过subscribe订阅结果处理数据,并且通过mView这个引用对象去回调通知界面做显示等UI操作


欢迎一起交流,有问题加群交流

kotlin实战交流群群二维码.png
上一篇:8.kotlin安卓实践课程-用kotlin写第一个fragment


下一篇:9.kotlin安卓实践课程-用kotlin写第一个fragment的recyclerView的adapter具体实现