Kapt编译时生成Google架构组件中的viewmodel

Kapt编译时生成Google架构组件中的viewmodel


Android架构组件拥有生命周期的自动管理和数据解耦等优秀的功能,能够将传统MVP架构进行替换。在使用架构组件的过程中,我采用的方式是首先完成基础类

T 表示对应的retrofit service类型

abstract class BaseViewModel<T>(application: Application) : AndroidViewModel(application) {

之后针对Retrofit中的不同Service interface,继承并实现具体的viewmodel类,并针对每个service接口,需要编写一个liveData字段和对应的get或post方法提供给app层调用,同时对应的方法可能会存在三种类型: 

1:直接调用service进行网络获取

2:使用本地缓存展示之后进行网络获取更新

3:使用json类型的数据post,也会造成所需方法写法上的差异

1:

package com.xxx.xxx.architecture.xxx

import android.app.Application
import android.arch.lifecycle.MediatorLiveData
import com.baseproject.architecture.BaseViewModel
import com.xxx.xxx.appbase.BaseAppLiveDataObserver

/**
 * This file is generated by kapt, please do not edit this file */
open class BaseAnchorServiceViewModel(application: Application) : BaseViewModel<AnchorService>(application) {
    val getHotAnchorListLiveData: MediatorLiveData<kotlin.collections.List<SearchHotAnchorModel>> by lazy { MediatorLiveData<kotlin.collections.List<SearchHotAnchorModel>>() }

    fun getHotAnchorList() {
        mService.getHotAnchorList().subscribe(BaseAppLiveDataObserver(getHotAnchorListLiveData))
    }
}
2:
    val getUserAssetsLiveData: MediatorLiveData<UserAssetsModel> by lazy { MediatorLiveData<UserAssetsModel>() }

    fun getUserAssets() {
        object : BaseAppNetworkBoundResource<UserAssetsModel>(getUserAssetsLiveData) {
        override fun doApiCall(): Observable<UserAssetsModel> {
        return mService.getUserAssets()}}
    }
    

3:

    val postRewardReceiveLiveData: MediatorLiveData<PostRewardReceiveModel> by lazy { MediatorLiveData<PostRewardReceiveModel>() }

    fun postRewardReceive(reward_ids: List<Int>, anchor_id: String) {
        val params = BaseJSONObject().put("reward_ids",reward_ids).put("anchor_id",anchor_id)
        mService.postRewardReceive(RequestBody.create(MediaType.parse("application/json"), params.toString())).subscribe(BaseAppLiveDataObserver(postRewardReceiveLiveData))
    }
    


不同的方式有很多共同之处,因此我采用kapt注解的方式一键生成相关代码,大大优化了开发效率,项目地址:

https://github.com/huanle19891345/kapt_viewmodel

欢迎大家指教

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值