草庐IT

Android Compose UI (三) (Compose UI + MVI)结合使用

文章目录1.前言2.ViewModel的完整代码3.View的完整代码LoginActivityLoginView4.扩展函数相关5.总结1.前言在上一篇文章中已经介绍了常规的没有结合ComposeUI来使用的MVI模式了,本篇文章就是把之前的内容结合起来,在之前的基础上修改为完整的ComposeUI+MVI的案例,如果对于文章中有不理解的可以回过头去看之前的内容.2.ViewModel的完整代码classLoginViewModel:ViewModel(){valloginChannel=ChannelLoginIntent>(Channel.UNLIMITED)privatevallogi

Android MVI架构之UI开发指南

AndroidMVI架构之UI开发指南在整个应用程序架构中,UI层并不是唯一的层级。除了UI层之外,您还可以找到数据层,有时还有领域层。根据Android架构文档:UI层在屏幕上显示数据。数据层暴露应用程序数据,并包含大部分业务逻辑。领域层是一个可选的层,旨在简化和重用UI层的潜在业务逻辑复杂性。不多也不少。注意:业务逻辑赋予应用程序价值。它是实现产品需求的方式,决定了应用程序如何获取、存储和修改数据。UI层中的实体UI层包括三个具有明确定义责任的独立实体。这种区分有助于关注点分离,增强可测试性,并促进可重用性。UI或UI元素,在屏幕上呈现数据。UI状态描述要在屏幕上呈现的数据。如果UI代表用

android - 莫斯比 MVI : Inconsistent intent binding behavior

我正在使用新的MosbyMVI新演示应用程序的库。在演示者中定义Intent时,在附加View时触发/发出Intent是不一致的。例如:让我们在Activity中定义非常简单的IntentpublicObservableintentLoadData(){returnObservable.just(true);}演示者像这样绑定(bind)Intent:@OverrideprotectedvoidbindIntents(){ObservableloadData=intent(ExampleViewContract::intentLoadData).flatMap(interactor::

Android MVI架构之UI状态的持有与保存

AndroidMVI架构之UI状态的持有与保存我们将介绍状态持有者和其他与UI层相关的主题,例如在Android上提升状态和保存UI状态的位置。状态持有者状态持有者通过处理逻辑和/或公开UI状态来简化UI。在本节中,我们将看到如何实现状态持有者以及需要考虑的实现细节。为了确定实现细节,我们首先需要确定Android应用程序中常见的逻辑类型。逻辑类型我们已经讨论过业务逻辑涉及实现产品需求,指定应用程序数据的创建、存储和修改方式。当业务逻辑存在于UI层时,建议在屏幕级别管理此逻辑。我们稍后会详细了解更多内容。另一种逻辑类型是UI逻辑。UI逻辑确定如何在屏幕上显示状态变化。虽然业务逻辑决定如何处理数

android - MVI架构中的单次事件

尝试新的架构范例,其中演示者创建不可变的状态(模型)流,而View只是呈现它。无法理解如何处理我们只需要一次性创建某个事件的情况。有几个例子。1)笔记应用程序。我们有editText和saveButton.用户点击saveButton,一些处理发生并且editText应该被清除。你们能描述一下我们的ViewState中会有什么吗?这里和大概的逻辑流程?我现在看到的问题和陷阱:我们订阅了editText.textChanges()在演示者中。如果我们有text在我们的ViewState并在每次渲染调用时渲染它然后我们将陷入递归,因为它会发出新的textChange并将更新状态并再次渲染。

Android MVI框架搭建与使用

MVI框架搭建与使用前言正文一、创建项目①配置AndroidManifest.xml②配置app的build.gradle二、网络请求①生成数据类②接口类③网络请求工具类三、意图与状态①创建意图②创建状态四、ViewModel①创建存储库②创建ViewModel③创建ViewModel工厂五、UI①列表适配器②数据渲染六、源码前言  有一段时间没有去写过框架了,最近新的框架MVI,其实出来有一段时间了,只不过大部分项目还没有切换过去,对于公司的老项目来说,之前的MVC、MVP也能用,没有替换的必要,而对于新建的项目来说还是可以替换成功MVVM、MVI等框架的。本文完成后的效果图:正文  每当一

软件设计模式之MVC、MVP、MVVM、HMVC、MVA、MVI和VIPER

软件架构设计是将软件一些共有的特征转换为满足业务需求和技术要求的结构化方案的过程。软件架构设计的目的是为了实现系统的长期可维护性、可扩展性、可靠性和安全性,以满足业务需求和未来可能的变化。在过去的几年里,软件架构的设计模式层出不穷,每一个模式的出现,都是试图想使代码更可读、更容易于测试、更易于维护以及让开发人员更轻松。但同时,每个模式的出现也都有适应的场景和优劣。本文主要将MVC、MVP、MVVM、HMVC、MVA、MVI和VIPER等,几个常见的设计模式做一个汇总的介绍。1.MVCMVC是一种体系架构,经典MVC模式中,M是指模型,V是视图,C则是控制器,使用MVC的目的是将M和V的实现代码

【Android 架构之 MVI 雏形】响应式编程 + 单向数据流 + 唯一可信数据源

这是MVI架构的第一篇,系列文章目录如下:【Android架构之MVI雏形】响应式编程+单向数据流+唯一可信数据源关于Android架构的MVI初级体【Android架构之MVI完全体】就MVVM来说关于PartialChange&Reducer[Android架构之MVI究极体]数据区分状态和事件,解决粘性数据引子MVI是Model-View-Intent的简称,它们分别表示。。。。。我并不打算逐个字母介绍它们代表的意思。因为这样一点也不能增进对MVI的理解,反而会对它的认识蒙上厚厚的一层迷雾。奥古斯都在《忏悔录》里面问我这样一个问题:“时间到底是什么?你不问我的时候,我是知道的;你一问我,

android - 使用 RxJava2 和 Retrofit2 Mosby MVI 的 OnErrorNotImplementedException

尽管在下游处理了错误(?),但我还是抛出了OnErrorNotImplementedException并且应用程序崩溃了。异常E/AndroidRuntime:FATALEXCEPTION:RxCachedThreadScheduler-1Process:pl.netlandgroup.smartsab,PID:9920io.reactivex.exceptions.OnErrorNotImplementedException:HTTP401Unauthorizedatio.reactivex.internal.functions.Functions$OnErrorMissingCon

android - 在 MVI 中访问 reducer 函数之外的状态

在带有Mosby库的MVI中,访问流中reducer函数之外的状态的最佳方法是什么?例如,当您需要为回收站加载下一页时,您需要知道最后加载的是哪一页。(在示例应用程序中,最后一页保存在加载程序中,但这违背了拥有单一状态POJO的全部目的) 最佳答案 有多种方法可以做到这一点,并且根据您的分页url的构造方式,您可能根本不需要引用私有(private)状态。例如,假设您可以通过数字访问下一页。所以http请求看起来像这样:http://www.foo.com/feed?page=1下一页是http://www.foo.com/feed