Android:使用Kotlin搭建MVVM+组件化App架构

一、简介Android MVVM架构模式

请点击查看Android:使用Kotlin搭建MVVM架构模式

二、简介组件化

以前一个项目所有业务代码都在App(model)里开发,App里按照功能模块分包,例如:首页(home)、社群(community)、 我的(mine),随着业务需求迭代App model里代码变的庞大;

后来改成模块化,将首页、社群、我的分成三个模块(model),但是三个模块不能单独运行安装到设备上进行调试;

现在使用组件化,各个模块之间相互解耦,不仅可以将首页、社群、我的分成三个模块(model),而且各个模块可以单独运行安装到设备上进行调试,还可以将各个模块组合成一个完整的 App。

三、Kotlin搭建MVVM+组件化架构框架

3.1 技术摘要

这里补充内容如下,其他的技术摘要请点击查看Android:使用Kotlin搭建MVVM架构模式

  • 组件化通信路由(router)
    auto-service

  • 依赖auto-service-annotations
    在baselib里添加依赖
    dependencies { api(“com.google.auto.service:auto-service-annotations:1.1.1”) }
    在这里插入图片描述

  • 依赖auto-service
    在每个model单独添加依赖:
    dependencies { kapt(“com.google.auto.service:auto-service:xxx”) }

提醒:KotlinMVVMComponent组件通信路由使用的是auto-service,如需了解阿里开源的路由Arouter框架如何使用,可以查看下面推荐的Android 组件化的实现方案,ARouterComponent 源码demo里面组件通信使用的框架Arouter
点击查看Android 组件化的实现方案
点击查看阿里开源的Arouter框架

3.2 项目结构图
3.2.1 KotlinMVVMComponent整体结构图

在这里插入图片描述

3.2.2 compositebuild

统一管理Gradle依赖版本
在这里插入图片描述
提醒:这里看到每个model都是单独创建gradle plugin,也可以将业务层的HomeGradlePlugin、CommunityGradlePlugin、MineGradlePlugin,这三个改成统一使用一个gradle plugin

3.2.3 baselib

在这里插入图片描述

3.2.4 app

在这里插入图片描述

3.2.5 home

在这里插入图片描述

3.2.6 home模块里的WXArticleActivity.kt代码图

演示使用路由工具类进行页面跳转
在这里插入图片描述

3.2.7 模块gradle切换配置信息

HomeGradlePlugin里的代码图
在这里插入图片描述

3.2.8 开启单独调试模块

在这里插入图片描述

四、源码

点击查看gitee上的KotlinMVVMComponent源码demo

点击查看github上的KotlinMVVMComponent源码demo

五、推荐阅读

Android 组件化的实现方案

阿里开源的Arouter框架

Android:使用Kotlin搭建MVVM架构模式

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然,我很愿意回答您的问题。下面是一个 Kotlin + 协程 + Retrofit + MVVM 实现网络请求的示例: 1. 在 build.gradle 中添加以下依赖: ``` implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0' implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.2.0' implementation 'com.squareup.retrofit2:retrofit:2.8.1' implementation 'com.squareup.retrofit2:converter-gson:2.8.1' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.9' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9' ``` 2. 创建 Retrofit 接口: ```kotlin interface ApiService { @GET("users/{user}/repos") suspend fun getRepos(@Path("user") user: String): List<Repo> } ``` 3. 创建数据模型: ```kotlin data class Repo(val name: String) ``` 4. 创建 Repository: ```kotlin class MainRepository(private val apiService: ApiService) { suspend fun getRepos(user: String): List<Repo> { return apiService.getRepos(user) } } ``` 5. 创建 ViewModel: ```kotlin class MainViewModel(private val repository: MainRepository) : ViewModel() { private val _repos = MutableLiveData<List<Repo>>() val repos: LiveData<List<Repo>> = _repos fun getRepos(user: String) { viewModelScope.launch { _repos.value = repository.getRepos(user) } } } ``` 6. 创建 Activity/Fragment: ```kotlin class MainActivity : AppCompatActivity() { private lateinit var viewModel: MainViewModel override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val apiService = Retrofit.Builder() .baseUrl("https://api.github.com/") .addConverterFactory(GsonConverterFactory.create()) .build() .create(ApiService::class.java) val repository = MainRepository(apiService) viewModel = ViewModelProvider(this, MainViewModelFactory(repository))[MainViewModel::class.java] viewModel.repos.observe(this, Observer { repos -> // do something with repos }) viewModel.getRepos("octocat") } } ``` 以上就是一个使用 Kotlin + 协程 + Retrofit + MVVM 实现网络请求的示例。希望对您有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值