Android MVVM组成结构

引子

渐渐的程序员变懒了,而后一个个框架,一个个插件应运而生,而后让程序员在愈来愈懒的道路上永不中止,美其名曰:减小咱们对于细节的没必要要关注,而将更大的经历关注在业务层次,提升开发速度。而这种说法获得了绝大数人的赞同,结果就是:我在这边开发框架使用的分享。好坏暂且不论,就开发效率和协同开发方面来讲的确是利器,让咱们较少的关注结构和协同方面,为公司节省很多时间,也不失为居家旅行的一道良方。闲话少叙,本篇主要介绍Google推出的 Android Architecture Component 中的 MVVM-LiveData-kotlin 。若说的不对的地方,还望各位看官指出纠正。java

介绍

MVVM已经出来了较长一段时间了,而这个模式则是将 MVVMkotlin 两个结合而造成,显得十分合适,kotlin自己的简短、lambda写法配合LiveData的观察者模式使得代码的结构和层次更加鲜明。MVVM-LiveData_kotlin这一结构包含了多个部份内容,以下就该结构各个部分进行简要的分析、并将Retrofit与LiveData进行配对实现网络请求(替代RxJava+Retrofit).python

本篇难免落入俗套的介绍下MVVM的背景介绍之中。android

MVVM 结构

首先谈谈什么是mvvm,android开发中有关于界面和数据的绑定这块一直都是研究的重点。随着APP的界面愈来愈多样、业务变得愈来愈复杂,一个界面上所须要处理的数据也就愈来愈多,这时候传统的findView方式显然使得开发者产生不满,因此有butterknife这样的注解绑定控件的出现,而业务与界面状态的不断变化处理渐渐冗长,就致使了Databinding这类数据绑定的出现,而MVVM就是基于databinding这类绑定式的APP开发框架。其结构以下:git

mvvm框架

Architecture Component

MVVM 的使用是Google 推出的 Android Architecture Component 实现,其中所包含的组件以下:程序员

  • ROOM
    Room 是google 对于本地数据库的一个封装,经过注解实现的一个本地数据库的建立管理组件,以下为一个Room使用的案例:
@Database(entities = arrayOf(Task::class), version = 1)
abstract class ToDoDatabase : RoomDatabase() {

    abstract fun taskDao(): TasksDao

    companion object {

        private var INSTANCE: ToDoDatabase? = null

        private val lock = Any()

        fun getInstance(context: Context): ToDoDatabase {
            synchronized(lock) {
                if (INSTANCE == null) {
                    INSTANCE = Room.databaseBuilder(context.applicationContext,
                            ToDoDatabase::class.java, "Tasks.db")
                            .build()
                }
                return INSTANCE!!
            }
        }
    }

}

复制代码
  • Lifecycle-aware components
    Lifecycle-aware是Google用于管理生命周期的一个组件.用于处理MVVM中数据绑定的状态变化,让咱们不须要关心View的状态改变,MVVM 中的View层 FragmentActivity、androidx.fragment.app.Fragment 组件实现了该组件。github

  • ViewModels
    MVVM框架的VM层,用于实现与view的双向绑定,并操控model的一个组件.viewmodel主要是用于将MVVM的界面与逻辑进行解耦分离,便于代码的后期维护,其实现以下:数据库

class BaseViewModel : ViewModel() {

 // viewmodel实现层

}

复制代码
  • LiveData
    Google开发的一个观察者模式的组件,能够替代RxJava的部分功能,是一个相似RxJava的组件。网络

  • Databinding
    Databinding 是用于界面与数据的绑定使用的,先已在Andorid Studio内置,可直接经过在build.gradle设置以下代码开启:app

android {

  ...
  dataBinding {
    enabled = true
 }
}
复制代码

有了上述的组件就可一一开始组件MVVM.框架

原文连接

欢迎关注个人我的博客Enjoytoday,有更新更全的python、Kotlin、Java、Gradle开发相关博客更新!

相关文章
相关标签/搜索