首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android 应用架构演变

语言编写,所以自然就首先考虑用原来Java Web端成熟设计方案MVC尝试划分结构 ?...MVP是对MVC改进,让Model和View完全解耦 优点 Model与View不存在直接关系 Presenter与View、Model交互使用接口定义交互操作进一步达到松耦合也可以通过接口更加方便地进行单元测试...类似于Java Web JSP中标签语法 View和ViewModel绑定在一起,ViewModel改变会同步到View层,从而View层作出响应 ?...优点 隔离了UI层和业务逻辑层,降低程序耦合度 缺点 会产生很多类型 RxJava(Reactive Programming for Java)+RxAndroid RxJava允许通过异步流方式处理数据...RxAndroidRxJava基础上实现了线程自由切换。 ? 优点 RxJavaObservable和操作符避免了嵌套回调出现。

1.3K20
您找到你想要的搜索结果了吗?
是的
没有找到

三大架构比较

在没有UI环境下对Controller进行单元测试时候,Controller业务逻辑正确性是无法验证:Controller更新Model时候,无法对View更新操作进行断言。...想去动态改变一个页面的背景,或者动态隐藏/显示一个按钮,这些都没办法在xml中做,只能把代码写在activity中,造成了activity既是controller层。...Presenter对View是通过接口进行,在对Presenter进行不依赖UI环境单元测试时候。可以通过Mock一个View对象,这个对象只需要实现了View接口即可。...然后依赖注入到Presenter中,单元测试时候就可以完整测试Presenter业务逻辑正确性。...可参考一套Android App基础框架 架构设计:从MVC、MVP到MVVM 网络访问:支持REST、HTTPS及SPDYRetrofit+Okhttp 响应式编程:RxJava/RxAndroid

1.1K100

一种MVVM风格Android项目架构浅析

由于零零散散业余时间看了点儿,有哪里不对地方请指正。 何为MVVM?懂web开发都知道有一种风格叫MVC ,模型,视图,控制器。...一种软件设计典范,用一种业务逻辑、数据、界面显示分离方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互同时,不需要重新编写业务逻辑。...比如里面用到了 io.reactivex.rxjava2:rxandroid:2.0.2 compile('com.squareup.okhttp3:logging-interceptor:3.7.0'...技术,使用了很火异步框架RxJava,使用了网络库retrofit等等 请看以下代码结构: ?...= null) { 由此可以理出,何为MVVM ? 即 M (model)+ V(视图) + VM (ViewModel) 从上述工程结构上看,model文件夹即充当了M (model)角色。

1.3K20

如何构建Android MVVM应用程序

但是这个模式还是存在一些不好地方,比较说: Activity需要实现各种跟UI相关接口,同时要在Activity中编写大量事件,然后在事件处理中调用presenter业务处理方法,View和Presenter...单元测试 View Model里面是数据和业务逻辑,View中关注是UI,这样做测试是很方便,完全没有彼此依赖,不管是UI单元测试还是业务逻辑单元测试,都是低耦合。...来做它自己业务,这时候Activity这个ViewModel里面可能包含了两个Fragment分别的ViewModel。...关于ViewModel类中包含哪些模块和字段,这个需要开发者自己去衡量,这边建议ViewModel 不要引入太多成员变量,成员变量最好只有上面的提到5种(context、model、...)...保留这个Model引用,我们来看下这一块大致代码(代码涉及到简单RxJava看不懂可以查阅入门一下): //Model private NewsDetail newsDetail;

1.2K10

如何构建Android MVVM 应用框架

单元测试 有些同学一看到单元测试,可能脑袋都大。是啊,写成一团浆糊代码怎么可能做单元测试?如果你们以代码太烂无法写单元测试而逃避,那可真是不好消息了。这时候,你需要MVVM来拯救。...我们前面说过了,ViewModel层做事是数据处理和业务逻辑,View层中关注是UI,两者完全没有依赖。不管是UI单元测试还是业务逻辑单元测试,都是低耦合。...里面可能包含了两个Fragment各自ViewModel,这就是嵌套ViewModel。...),并在ViewModel保留这个Model引用,我们来看下这一块大致代码(代码涉及简单RxJava看不懂可以查阅入门一下): //Model private NewsDetail newsDetail...本文和源码都没有涉及到单元测试,如果需要写单元测试,可以结合Google开源MVP框架添加Contract类实现面向接口编程,可以帮助你更好地编写单测。

4.4K60

改造 Android 官方架构组件 ViewModel

从官方文档可以看出 Google 对此建议就是 RxJava, Agera, LiveData 等类似功能库, 你只使用一个即可 选择 RxJava 还是 LiveData ?...LiveData 和 RxJava 功能的确过于重合, 我也十分赞同 Google 官方建议, 两者之中选择其一就可以了, 没必要两者都引入项目, 而 MVPArms 框架, 也正好引入了 RxJava..., 或 Rxjava 加上生命周期组件, 也可以轻易做到根据生命周期停止和恢复之前事件, 在配上 Rxjava 强大操作符, LiveData 能做RxJava 都能做, LiveData 不能做事...RxJava 也能做 并且 RxJava 不仅仅只是 RxJava, 他还是一个庞大生态链, 他还有 RxCache, RxLifecycle, RxAndroid, RxPermission, Retrofit-Adapter...等大量并且强大衍生库, 我们离开它做很多事都非常不便, 刚刚出生, 羽翼未丰 LiveData 相比于 RxJava 将没有任何优势, 甚至显得非常简陋 因此 LiveData 和 RxJava

74210

Android通用流行框架汇总

Picasso 一个强大图片下载与缓存库 Fresco 一个用于管理图像和他们使用内存库 Glide 一个图片加载和缓存库 ---- 3....后台处理 名称 描述 Tape 个轻快,事务性,基于文件FIFO库 Android Priority Job Queue 一个专门为Android轻松调度任务工作队列 ---- 10....响应式编程 名称 描述 RxJava JVM上响应式扩展 RxJavaJoins 为RxJava提供Joins操作 RxAndroid Android上响应式扩展,在RxJava基础上添加了Android...线程调度 RxBinding 提供用RxJava绑定Android UIAPI Agera Android上响应式编程 ---- 12....测试框架 名称 描述 Mockito Java编写Mocking单元测试框架 Robotium Android UI 测试 Robolectric Android单元测试框架 Android自带很多测试工具

92130

15 个 Android 通用流行框架大全

Picasso 一个强大图片下载与缓存库 Fresco 一个用于管理图像和他们使用内存库 Glide 一个图片加载和缓存库 3....后台处理 名称 描述 Tape 一个轻快,事务性,基于文件FIFO库 Android Priority Job Queue 一个专门为Android轻松调度任务工作队列 10....响应式编程 名称 描述 RxJava JVM上响应式扩展 RxJavaJoins 为RxJava提供Joins操作 RxAndroid Android上响应式扩展,在RxJava基础上添加了Android...线程调度 RxBinding 提供用RxJava绑定Android UIAPI Agera Android上响应式编程 12....测试框架 名称 描述 Mockito Java编写Mocking单元测试框架 Robotium Android UI 测试 Robolectric Android单元测试框架 Android自带很多测试工具

1.3K20

15 个 Android 通用流行框架大全

Picasso 一个强大图片下载与缓存库 Fresco 一个用于管理图像和他们使用内存库 Glide 一个图片加载和缓存库 3 图片处理 名称 描述 Picasso-transformations...11 响应式编程 名称 描述 RxJava JVM上响应式扩展 RxJavaJoins 为RxJava提供Joins操作 RxAndroid Android上响应式扩展,在RxJava基础上添加了...Android线程调度 RxBinding 提供用RxJava绑定Android UIAPI Agera Android上响应式编程 12 Log框架 名称 描述 Logger 简单,漂亮,强大...Android日志工具 Hugo 在调试版本上注解触发方法进行日志记录 Timber 一个小,可扩展日志工具 13 测试框架 名称 描述 Mockito Java编写Mocking单元测试框架...Robotium Android UI 测试 Robolectric Android单元测试框架 Android自带很多测试工具:JUnit,Monkeyrunner,UiAutomator,Espresso

1.4K60

Mvvm、RxJava、Retrofit 三剑合璧

单元测试 ViewModel里面是数据和业务逻辑,View中关注是UI,这样做测试是很方便,完全没有彼此依赖,不管是UI单元测试还是业务逻辑单元测试,都是低耦合。...布局不一样,最外层是一个layout节点,然后包含两个子节点,第一个是data,第二个是LinearLayout。...聊天 RxJava + Retrofit 网络请求 前面讲三个页面都是单机游戏,数据都是本地假数据,最后来看下如果用RxJava+Retrofit进行网络请求,从服务器请求粉丝列表。...不熟悉朋友可以去看我上一篇博客,这里就不讲RxJava细节了。...总之Mvvm+RxJava+Retrofit配合起来使用确实挺不错,习惯了写起来还挺顺RxJava不仅仅在和Retrofit配合时才能用,自己单独用场景也很多。

2.6K20

RxAndroid从零开始学习之一(RxJava简单Demo)

前言 现在RxJavaRxAndroid似乎很火,很多开发群里面都在讨论。...至于RxAndroid其实只是RxJava一个扩展,它在RxJava基础上添加了一些针对Android系统新API。...因为我是在Android系统上编写代码测试,所以我就将之称呼为RxAndroid了。其实大多讲得基本上都是RxJava知识点。这点需要大家注意。...本人偏向于实用主义,不想开山立作去详尽解释RxAndroid中具体语法,只想通过自己编写demo去一个一个验证知识点 好吧。开始。...RxJava是用来解决异步工作问题,在Android中特别恼火多线程开发问题上游刃有余,所以才深受广大开发者喜欢。RxAndroid基于RxJava

2.3K30

Android技术栈(四)Android Jetpack MVVM 完全实践

image.png 1 MVVM总览 本文包含Android中MVVM体系中很多部分,主要对ViewModel+DataBinding+RxJava+LiveData+Lifecycle等笔者所使用技术体系进行解析...设计原则: 理想状态下,DataBinding与View构建关系应该是数据驱动,即只要数据不改变View层实现变更不会导致逻辑重新编写(把TextView改成EditText也不需要修改一行代码...设计原则: ViewModel通常应该使用LiveData持有View层数据实际控制权 ViewModel可以包含操作,但是ViewModel不应该直接或者间接地引用View,即使是方法中参数也最好不要...设计原则: 涉及Activity请一定不要包含进来,WindowManager,它们属于View层....FTP客户端作为本次MVVM博文演示Demo,该项目简单实践了QMUI+MVVM+DataBinding+RxJava+LiveData+Room技术栈并由kotlin和Java混编写成,代码质量比较一般

3.8K01

Android应用架构未来:深入理解MVI模式及其优势

意图(Intent):代表用户行为,点击按钮、输入文本等,它们被发送到模型层以改变应用状态。 Model Model代表着应用程序状态。...在MVI中,模型是不可变数据结构,它包含了应用程序所有状态信息。当视图接收到新状态时,它会重新渲染以反映最新状态。这种不可变性使得状态管理更加简单和可靠,因为状态不会被意外地修改或篡改。...考虑使用 Kotlin 协程或 RxJava 等库来处理异步操作,以确保应用程序流畅性和响应性。...测试友好:Presenter作为View和Model之间中间层,可以方便地进行单元测试和集成测试。...适用场景: 传统项目:适用于传统Android项目,开发者更熟悉这种模式,易于上手和使用。 需要测试项目:适用于需要进行大量测试项目,Presenter可以方便地进行单元测试

45110
领券