用 kotlin 学习 Android MVVM 架构组件

Posted

技术标签:

【中文标题】用 kotlin 学习 Android MVVM 架构组件【英文标题】:Learn Android MVVM architecture components with kotlin 【发布时间】:2019-07-01 00:03:20 【问题描述】:

在搜索了 android 架构组件后,我意识到 MVVM 在某些方面比其他架构更好,所以我开始学习 MVVM 并且我正在使用 Kotlin语言,但问题是当我搜索教程开始学习时,我发现了许多组件,如 RxJava、RxAndroid、Dagger2、Room、Lifecycle 等。 但他们没有说明为什么会这样使用它们以及为什么选择某些特定组件。我会告诉你一些例子:

1- 带有 Dagger2、Retrofit、RxJava 的 Android MVVM

2- 带有 Dagger2、Retrofit、RxAndroid 的 Android MVVM

3- 带有 MVVM dagger2 RxJava Livedata 和 Room 的 Android 应用

我的问题是:

1- 我应该如何决定选择其中一些组件并使用它们?

2- 我怎么知道我需要同时使用其中一些(例如 Livedata 和 RxJava)?

这真的让我很困惑,我不知道如何开始。

【问题讨论】:

关注the tutorial,并忽略 RxJava,直到您需要以 需要 Rx 运算符表达什么的方式执行异步请求你想要,而不是一些 MediatorLiveData ;) 【参考方案1】:

首先你需要了解为什么要使用 Kotlin、MVVM、Dagger、RxJava、Retrofit。

MVVM 和 Kotlin:

https://medium.com/@zhangqichuan/android-development-with-mvvm-and-kotlin-9598c3623ce1

RxJava 和 RxAndroid:

RxAndroid 是 RxJava 的扩展(用于处理线程和异步任务),更多详细信息请查看以下链接: Difference between RxJava and RxAndroid? https://www.quora.com/What-is-the-difference-between-Retrofit-and-RxJava-RxAndroid

改造:

https://medium.com/@elye.project/kotlin-and-retrofit-2-tutorial-with-working-codes-333a4422a890

LiveData 和 kotlin 的房间:

Room 是 SQLite 数据库之上的数据库层,用于在从本地 sqlite 数据库获取数据时删除样板,使用以下链接: https://codelabs.developers.google.com/codelabs/android-room-with-a-view-kotlin/#0

在单独了解这些组件(Kotlin、MVVM、Dagger、RxJava 和 RxAndroid、Retrofit、LiveData)之后,您需要在单个项目中完成所有这些事情,请使用以下链接:

https://github.com/egek92/Kotlin-MVVM-LiveData-Room

【讨论】:

需要全部使用吗? 这不是必需的,但为了更好的代码结构和代码维护,使用了这些东西。所以分开理解每一件事是很重要的。【参考方案2】:

作为一名小学生。 android 开发者,我和你一样想,但我选择了这样的路线:

使用 ViewModel(AAC)、LiveData、Observable 模式学习 MVVM。 使用协程创建异步和多线程进程。 使用 Koin 进行依赖注入。

(如果您愿意,可以查看如何混合它们。Koin 将很快添加。https://github.com/furkanaskin/CoinStalker)

未来?

Dagger 2,可能是 Rxjava 等。

【讨论】:

考虑overflow.buffer.com/2016/09/26/…【参考方案3】:

如果您了解 Core Android 基础知识并且至少完成了 1 或 2 个项目,那么您可以跳到这里,https://android.jlelse.eu/why-to-choose-mvvm-over-mvp-android-architecture-33c0f2de5516

【讨论】:

【参考方案4】:

也许您需要的是从基础开始。 有几个关于 Android 架构的谷歌官方代码实验室。

您可以先看看这个代码实验室,然后再看看其他的。

https://codelabs.developers.google.com/codelabs/kotlin-android-training-view-model

【讨论】:

【参考方案5】:

Simple Note App 是用 Kotlin 使用 MVVM 架构编写的

https://github.com/prakashshuklahub/Simple-Notes-Kotlin-App

应用中使用的架构组件如下

    实时数据 房间: 视图模型: 存储库:

【讨论】:

【参考方案6】:

您可以使用

查看 GitHub 项目
    Kotlin MVVM 喷气背包 改造2

这里是完整的源代码 GitHUb 链接:https://github.com/enamul95/kotlin_MVVM_Jetpack

【讨论】:

以上是关于用 kotlin 学习 Android MVVM 架构组件的主要内容,如果未能解决你的问题,请参考以下文章

Android : Kotlin : MVVM : 为啥 viewModel.onButtonClicked() 会导致应用程序崩溃?

从Kotlin到Flutter,嗯,还是MVVM更香!

没有Dagger2的Android Kotlin MVVM结构

Android kotlin 系列讲解(进阶篇)高级项目架构模式 - MVVM

Android安卓进阶技巧之Kotlin结合Jetpack构建MVVM

用Kotlin Flow解决Android开发中的痛点问题