草庐IT

Jetpack-MVVM

全部标签

小结一下MVI与MVVM的区别

很常见的疑问,MVI(model-view-intent)到底先进在哪里?翻了很多类似的文章,但找到简短而明确的总结很困难。因为它们非常相似,例如使用LiveData,ViewModel,Flow/Rxjava,DataBinding等等。我个人的总结:MVI是更加严格的MVVM。MVI相比MVVM的优点:1.更高效的通讯。MVI采用单向通讯,不需要双向通讯必要的线程锁,在数据结构错综复杂时,性能更加优秀。2.MVI输出整个状态迫使程序员必须更加全面的思考,将复用的数据利用到最大。3.,强制使用流(flow/rxjava)处理逻辑。可以获得更清晰更严谨甚至到严苛的代码,它意味着更低的维护成本和

小结一下MVI与MVVM的区别

很常见的疑问,MVI(model-view-intent)到底先进在哪里?翻了很多类似的文章,但找到简短而明确的总结很困难。因为它们非常相似,例如使用LiveData,ViewModel,Flow/Rxjava,DataBinding等等。我个人的总结:MVI是更加严格的MVVM。MVI相比MVVM的优点:1.更高效的通讯。MVI采用单向通讯,不需要双向通讯必要的线程锁,在数据结构错综复杂时,性能更加优秀。2.MVI输出整个状态迫使程序员必须更加全面的思考,将复用的数据利用到最大。3.,强制使用流(flow/rxjava)处理逻辑。可以获得更清晰更严谨甚至到严苛的代码,它意味着更低的维护成本和

Android Jetpack架构组件(六)— WorkManager

一、WorkManager简介WorkManager是适合用于持久性工作的推荐解决方案。持久性的工作:如果工作始终要通过应用重启和系统重新启动来调度,便是持久性的工作。由于大多数后台处理操作都是通过持久性工作完成的,因此WorkManager是适用于后台处理操作的主要推荐API。持久性工作的类型:WorkManager可处理三种类型的持久性工作:立即执行:必须立即开始且很快就完成的任务,可以加急。长时间运行:运行时间可能较长(有可能超过10分钟)的任务。可延期执行:延期开始并且可以定期运行的预定任务。持久性工作类型类型周期使用方式立即一次性OneTimeWorkRequest和Worker。如

Android Jetpack架构组件(六)— WorkManager

一、WorkManager简介WorkManager是适合用于持久性工作的推荐解决方案。持久性的工作:如果工作始终要通过应用重启和系统重新启动来调度,便是持久性的工作。由于大多数后台处理操作都是通过持久性工作完成的,因此WorkManager是适用于后台处理操作的主要推荐API。持久性工作的类型:WorkManager可处理三种类型的持久性工作:立即执行:必须立即开始且很快就完成的任务,可以加急。长时间运行:运行时间可能较长(有可能超过10分钟)的任务。可延期执行:延期开始并且可以定期运行的预定任务。持久性工作类型类型周期使用方式立即一次性OneTimeWorkRequest和Worker。如

Android Jetpack架构组件(七)— Room

一、Room简介ROOM:轻量级ORM数据库,本质上是一个SQLite。ORM(ObjectRelationalMapping):对象关系映射该模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。Android采用Sqlite作为数据库存储。Sqlite代码写起来繁琐且容易出错,所以开源社区里逐渐出现了各种ORM(ObjectRelationalMapping)库。这些开源ORM库都是为了方便Sqlite的使用,包括数据库的创建,升级,增删改查等。常见的ORM有ORMLite,Gr

Android Jetpack架构组件(七)— Room

一、Room简介ROOM:轻量级ORM数据库,本质上是一个SQLite。ORM(ObjectRelationalMapping):对象关系映射该模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。Android采用Sqlite作为数据库存储。Sqlite代码写起来繁琐且容易出错,所以开源社区里逐渐出现了各种ORM(ObjectRelationalMapping)库。这些开源ORM库都是为了方便Sqlite的使用,包括数据库的创建,升级,增删改查等。常见的ORM有ORMLite,Gr

Android Jetpack架构组件(十)— StartUp

一、StartUp简介应用程序启动库提供了一种在应用程序启动时初始化组件的简单、高效的方法。库开发人员和应用程序开发人员都可以使用StartUp来简化启动序列并显式设置初始化顺序。StartUp允许您定义共享单个内容提供程序的组件初始化程序,而不是为每个需要初始化的组件定义单独的contentprovider。这可以显著缩短应用程序启动时间。简单的说就是通过一个公共的contentprovider来集中管理需要初始化的组件,从而提高应用的启动速度。二、StartUp使用1、在build.gradle中添加所需依赖dependencies{implementation"androidx.star

Android Jetpack架构组件(十)— StartUp

一、StartUp简介应用程序启动库提供了一种在应用程序启动时初始化组件的简单、高效的方法。库开发人员和应用程序开发人员都可以使用StartUp来简化启动序列并显式设置初始化顺序。StartUp允许您定义共享单个内容提供程序的组件初始化程序,而不是为每个需要初始化的组件定义单独的contentprovider。这可以显著缩短应用程序启动时间。简单的说就是通过一个公共的contentprovider来集中管理需要初始化的组件,从而提高应用的启动速度。二、StartUp使用1、在build.gradle中添加所需依赖dependencies{implementation"androidx.star

jetpack compose实战——Banner轮播图的使用和封装

前言项目地址:https://github.com/Peakmain/ComposeProject上篇文章我们讲到TopAppBar的封装,主要是封装一个标题居中的TopAppBar,包括支持沉浸式状态栏。今天我们来实现一个Banner的封装Banner框架介绍和使用项目源码地址:Banner.kt源码效果我们首先看下我们今天要做的效果轮播图效果图.gif框架使用详细使用文档:https://github.com/Peakmain/ComposeProject/wikiBanner(data=viewModel.bannerData,//设置数据onImagePath={//设置图片的url地

jetpack compose实战——Banner轮播图的使用和封装

前言项目地址:https://github.com/Peakmain/ComposeProject上篇文章我们讲到TopAppBar的封装,主要是封装一个标题居中的TopAppBar,包括支持沉浸式状态栏。今天我们来实现一个Banner的封装Banner框架介绍和使用项目源码地址:Banner.kt源码效果我们首先看下我们今天要做的效果轮播图效果图.gif框架使用详细使用文档:https://github.com/Peakmain/ComposeProject/wikiBanner(data=viewModel.bannerData,//设置数据onImagePath={//设置图片的url地