文章目录MVI的简单理解定义Intent和State定义BaseViewModelViewModel实现类与View强相关的VM实现一个通用的VM实现View层实现BaseMviActivity、BaseMviFragment、BaseMviUi实现I.BaseMviActivityII.BaseMviFragmentIII.BaseMviUi一些注意点参考:后记增加默认的错误消息处理(2022-12-25更新)BaseMviViewModel优化(2023-03-17更新)MVI的简单理解MVI是Model-View-Intent的缩写,它也是一种响应式+流式处理思想的架构。MVI的Mode
文章目录一、Activity遇到的问题二、视图View和数据模型Model三、ViewModel架构组件作用四、ViewModel代码示例1、ViewModel视图模型2、Activity组件3、UI布局文件4、运行效果五、ViewModel生命周期六、ViewModel使用注意事项一、Activity遇到的问题Activity遇到的问题:瞬态数据丢失:操作Activity时,如果屏幕自动旋转,当前Activity组件会执行销毁操作,并重新创建新的Activity组件,该操作会导致Activity的瞬态数据丢失;内存泄漏:在系统组件如Activity中,启动了一个线程,在线程中执行一系列操作,
文章目录一、Activity遇到的问题二、视图View和数据模型Model三、ViewModel架构组件作用四、ViewModel代码示例1、ViewModel视图模型2、Activity组件3、UI布局文件4、运行效果五、ViewModel生命周期六、ViewModel使用注意事项一、Activity遇到的问题Activity遇到的问题:瞬态数据丢失:操作Activity时,如果屏幕自动旋转,当前Activity组件会执行销毁操作,并重新创建新的Activity组件,该操作会导致Activity的瞬态数据丢失;内存泄漏:在系统组件如Activity中,启动了一个线程,在线程中执行一系列操作,
目录一、ViewModel的出生二、ViewModel的结束三、总结:我们通过ViewModel的生命周期来作为主线,讲解ViewModel、ViewModelProvider、ComponentActivity三者的关系。一、ViewModel的出生创建ViewModel,通过调用ViewModelProvider的get方法。mainViewModel=ViewModelProvider(this).get(MainViewModel::class.java)//ViewModelProvider.classpublicViewModelProvider(@NonNullViewModel
目录一、ViewModel的出生二、ViewModel的结束三、总结:我们通过ViewModel的生命周期来作为主线,讲解ViewModel、ViewModelProvider、ComponentActivity三者的关系。一、ViewModel的出生创建ViewModel,通过调用ViewModelProvider的get方法。mainViewModel=ViewModelProvider(this).get(MainViewModel::class.java)//ViewModelProvider.classpublicViewModelProvider(@NonNullViewModel
入门实战-权限管理之用户创建与关联角色(ViewModel再用与模型验证二)(1).在用户管理着模块中,相比较菜单功能的代码还是比较多的,设计到用户的创建,修改,角色变更和密码重置,同时都集中在列表页中。上图中,原来的角色名显示的是一个RoleId,也要通过ViewModel的应用,显示成对应的中文名称。(2).在ViewModel模型的建立上,我建了多个,为了满足不同的需要,其实后期用AutoMapper会简单些,但是为了理解和演练ViewModel的特点,就多写几遍,熟悉后掌握。如下图在Models文件夹中,我将用户Manager归到了新建的Managers下,便于管理,分别建立了:Cha
入门实战-权限管理之用户创建与关联角色(ViewModel再用与模型验证二)(1).在用户管理着模块中,相比较菜单功能的代码还是比较多的,设计到用户的创建,修改,角色变更和密码重置,同时都集中在列表页中。上图中,原来的角色名显示的是一个RoleId,也要通过ViewModel的应用,显示成对应的中文名称。(2).在ViewModel模型的建立上,我建了多个,为了满足不同的需要,其实后期用AutoMapper会简单些,但是为了理解和演练ViewModel的特点,就多写几遍,熟悉后掌握。如下图在Models文件夹中,我将用户Manager归到了新建的Managers下,便于管理,分别建立了:Cha
篇(15)-Asp.NetCore入门实战-权限管理之用户创建与关联角色(ViewModel再用与模型验证一)在上个篇章中,讲了角色和菜单的关系(也就是给角色赋权),本章讲用户和给用户分派角色的功能。如果是小白,最好是仔细看我写的代码,因为关键代码处都有注解。建议将篇14和篇15阅读完毕再做演练,为防止单篇过长,我将其分成2篇来讲解。用户与角色的处理逻辑是:(1).用户的增删改查;(2).给用户选一个所属角色。1.用户管理功能(1).用户表(Sql库)的创建CREATETABLE[dbo].[Manager]([Id][int]IDENTITY(1,1)NOTNULL,[RoleId][int
篇(15)-Asp.NetCore入门实战-权限管理之用户创建与关联角色(ViewModel再用与模型验证一)在上个篇章中,讲了角色和菜单的关系(也就是给角色赋权),本章讲用户和给用户分派角色的功能。如果是小白,最好是仔细看我写的代码,因为关键代码处都有注解。建议将篇14和篇15阅读完毕再做演练,为防止单篇过长,我将其分成2篇来讲解。用户与角色的处理逻辑是:(1).用户的增删改查;(2).给用户选一个所属角色。1.用户管理功能(1).用户表(Sql库)的创建CREATETABLE[dbo].[Manager]([Id][int]IDENTITY(1,1)NOTNULL,[RoleId][int
入门实战-权限管理之角色编辑和赋权(ViewModel-DTO初探)前面几章讲了菜单功能的管理之后,我们再创建一个角色管理的功能,创建过程不再详细介绍,只要按照菜单管理功能的步骤进行创建即可;和前面讲的稍微不同的是,现在多了一个Service层和异步操作,功能处理的代码放在这个层完成,只在Controller中调用即可。一、再讲角色的操作之前,我们先聊一个概念:ViewModel,或者叫DTO;两个是一个意思,叫法不一样而已。ViewModel是ASP.NETMVC应用中的隐式声明的层,用来维护Model和View之间的数据传递,因此,ViewModel也简称为数据传输对象或DTO。我们举个简