# MVVMCapybara **Repository Path**: Ubitar/MVVMCapybara ## Basic Information - **Project Name**: MVVMCapybara - **Description**: :pig2:基于MVVM的Android架构 - **Primary Language**: Kotlin - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-08-07 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 一个基于Android MVVM的架构🐖 以下文章,我会把本架构称为 **Capybara** 详细文章 https://www.jianshu.com/p/25fa3903c246 Capybara 使用`databinding + fragmentation`搭建,仅包含`Activity`及`Fragment`等组件基础功能, 可能有些人喜欢用 `navigation`,架构有分层,大家可以自己fork下来删减定制。
- ###### 前言
- ###### 结构简述
- ###### 食用方法
- ###### 常见问题

## 前言 在阅读 Capybara 前,我会默认大家都看过`databinding、fragmentation、LiveData`的使用方法,及kotlin的使用,kt真香。 不过我希望先阅读一下下面链接里的大佬文章,加深对MVVM和数据驱动的了解。 [https://www.zhihu.com/question/30976423/answer/106134677](https://www.zhihu.com/question/30976423/answer/106134677) [https://www.jianshu.com/p/1fcda521fcda](https://www.jianshu.com/p/1fcda521fcda) 禁止在layout中写复杂逻辑 >当然,如果你做过Vue或者微信小程序那更好理解了,即使那时你会嫌弃安卓的MVVM,或者充满黑人问号。 ## 结构简述 Capybara 主要通过让组件继承` IView 、IViewModel 、IModel `这3个接口来实现的。 ![结构](https://upload-images.jianshu.io/upload_images/15368523-062689e0bbe05fa5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) **View** 层可以为你的Activity、Fragment或者DialogFragment **Model** 层为为你的业务提供网络请求服务或者数据库读存服务 **ViewModel** **中间层** 则是负责处理你的业务逻辑,从Model中获取数据进行处理,并对View进行更新的 图中`BaseMvvMActivity`(我写错成了BseMvvMActivtivty了)、`BaseViewModel`和`BaseModel`为MVVM的实现抽象类,在不同的生命周期中实现并调用了MVVM接口。 而`BaseMvvMFragment`也类似有同样的实现,只不过因其生命周期,调用方法的位置有些不同,具体内容需要大家去浏览源码。 如果你想支持例如` Popup` 之类的组件,也可以了解架构的大体走向后通过实现上方所提及的3个接口进行实现,当然,前提是你的这类`popup`组件得有一个说得过去的生命周期。 ## 食用方法 ###### 1、新建一个布局文件,里面就只有一个按钮 ```