GithubHelp home page GithubHelp logo

jupitar / wanandroid Goto Github PK

View Code? Open in Web Editor NEW

This project forked from lulululbj/wanandroid

0.0 0.0 0.0 3.65 MB

Jetpack MVVM For Wanandroid 最佳实践 !

Home Page: https://juejin.im/post/5cb473e66fb9a068af37a6ce

License: GNU General Public License v3.0

Java 1.08% Kotlin 98.92%

wanandroid's Introduction

之前的 README 文件(在这里可以看到 真香!Kotlin+MVVM+LiveData+协程 打造 Wanandroid!) 和现有代码其实已经有较大出入,也包含了一些不正确的观点,回来更新一下。

翻一下提交记录,第一次 commit 是在 13 Mar 2018 ,没记错的话当时是基于 MVP 模式搭建的基础框架,到现在经过 100 多次 commit,整个框架已经完全更新。最新的代码在 mvvm-kotlin 分支。

刚从 MVP 过渡到 MVVM ,挺兴奋的,一股脑刷刷的写,其实犯了很多错误。第一次认识到关于 MVVM 的一些错误理解是通过这篇文章 关于MVC/MVP/MVVM的一些错误认识 ,大家可以仔细阅读这篇文章。

随着对架构的逐步深入认识,对 MVVM 的概念又逐渐模糊起来。在 Android 开发中,到底什么是 MVVM 架构?

数据驱动 UI ?

ViewModel + LiveData ?

不使用 Databinding 是不是 MVVM ?

不使用双向绑定是不是 MVVM ?

一时之间好像遍地都是 Jetpack MVVM 的相关文章和开源项目,但我却愈发觉得这算不上真正的 MVVM 。我更愿意称之为 变种 MVP ,或者它就是 Jetpack 架构

上面这张图就可以清晰的表达它的架构,它不是 MVP,也不是 MVVM

当然,每个人心中都有自己的架构,欢迎到 issue 区表达自己的看法。

最后简单罗列一下项目的技术点:

  • LiveData 作为数据容器,由 ViewModel 进行保存
  • Databinding 负责数据绑定工作
  • 使用 Kotlin Coroutines 完成网络请求等耗时异步任务,其中登录页面尝试使用了 flow
  • koin 负责依赖注入工作
  • ......

作为一个试错项目,后续可能继续引入各种新奇类库或者 gradle 插件,欢迎继续关注。

最后给我的专栏打个广告:

Android 面试进阶指南目录

计算机网络

  1. http 速查

Android

  1. 唠唠任务栈,返回栈和启动模式
  2. 唠唠 Activity 的生命周期
  3. 扒一扒 Context
  4. 面试官:为什么不能使用 Application Context 显示 Dialog?
  5. 面试官:OOM 可以被 try catch 吗?
  6. 面试官:Activity.finish() 之后十秒才回调 onDestroy ?
  7. 面试官:如何监测应用的 FPS ?

添加微信 bingxinshuo_ ,加入技术交流群 。

wanandroid's People

Contributors

lulululbj avatar ppjuns avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.