游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

Android真的推荐用MVI模式?MVI和MVVM有什么区

  最近铺天盖地的看到AndroidMVI模式的文章。
  MVVM还没捂热,什么时候又来了个MVI?我们android开发这么卷吗?到底是谁在卷?
  MVI模式被造出来是为了解决什么问题的?我们要不要学MVI模式,项目中要不要用起来?
  android官方真的推荐用MVI模式?MVI和MVVM有什么区别?
  我们该应该如何学习MVI架构模式?MVI学习路线建议。
  带着这些疑问,我们一起找到答案,希望对学习MVI的小伙伴有所帮助全称MVC:ModelViewController
  MVP:ModelViewPresenter
  MVVM:ModelViewViewModel
  MVI:ModelViewIntent到底谁是卷王?
  android自己卷自己,自己造一个MVI架构模式吗?
  MVI架构模式是国内android开发者最近一两年造出来的吗?当然不是,真正的卷王是前端。
  对你没看错,就是前端,那个想一统天下的web前端,不是android。
  看了很多MVI的资料,发现都提到cycle。js框架。android的mvi架构就是启发于cycle。js框架。例如这篇:MVIArchitectureforAndroidTutorial:GettingStarted
  https:www。raywenderlich。com817602mviarchitectureforandroidtutorialgettingstartedtocanchor002
  再例如这篇:MVI(ModelViewIntent)PatterninAndroid
  https:medium。comcodeyogamvimodelviewintentpatterninandroid98c143d1ee7c
  我们再看看Cycle。js框架是什么时候开始的,又是什么时候开始使用MVI模式的。
  Cycle。js框架第一个预发版本:
  https:github。comcyclejscyclejsreleases?page6
  2014年就发布了。
  再结合官方文档来看,Cycle。js框架就是为了MVI架构模式而生的。
  虽然不知道,Cycle。js框架是不是首个MVI模式框架。
  但是从很多资料可以推测,MVI架构模式就是Cycle。js框架推广开来的。
  而且早在2014年就已经在前端开发中用得飞起了。
  想想2014年,咱们在干嘛?android在用什么架构模式。那个时候大家还都在用MVC。有些优秀的团队刚开始尝试MVP。
  国内很多项目甚至连MVC都没用上,基本都是一团代码全放Activity。Model和View基本不隔离、不分层。
  正所谓,天下武功出少林啊。
  我们android的很多技术,在前端早就用烂了。我们再回想回想,官方的Flutter,诞生于Chrome团队的一场内部实验。你再看看Flutter项目的开发是不是很像web开发?
  脸书的React,也是先有的Reactjs后有的ReactNative。
  虽然,天下武功出少林,但,还有一句,世间武功唯快不破,哈哈哈哈
  也许随着摩尔定律的发展,未来的某一天,前端,最终会实现梦想,一统天下。为什么要创造MVI模式?MVI模式为了解决什么问题?结论:为了在MVC架构模式的思想上实现响应式编程范式。
  MVC主要的目的是将View和Model隔离。
  MVI在隔离View和Model的基础上,实现了响应式编程(也就是reactive编程)
  1、MVC也是MVI的爹
  我们知道MVP和MVVM的爹都是MVC。MVI的爹也是MVC。ModelViewIntent(MVI)isreactive,functional,andfollowsthecoreideainMVC。
  摘录自Cycle。js官方文档
  https:cycle。js。orgmodelviewintent。htmlmodelviewintentwhatmvcisreallyaboutsliceable
  2、MVI在MVC思想的基础上,实现了响应式编程(Reactive)范式
  MVC的Controller是命令是编程组件,不能直接实现响应式编程思想。ModelViewIntent(MVI)isreactive,functional,andfollowsthecoreideainMVC。
  TheControllerinMVCisincompatiblewithourreactiveideals,becauseitisaproactivecomponent。
  WecankeeptheMVCideawhileavoidingaproactiveController。
  摘录自Cycle。js官方文档
  3、什么是响应式编程?
  响应式编程范式(Reactiveprogramming):范式这个词不理解?像对象编程我们都很熟吧,面向对象也是一个编程范式。
  响应式编程范式:是一种,面向数据流和变化的申明式编程范式。
  安卓官方的compose框架、微信小程序、Flutter、React、鸿蒙UI的开发框架,都是使用响应式开发框架。
  这里就不拓展开来讲了,上面提到的任何一个开发框架,你只要会一个基本就能理解响应式编程范式。
  如果一个都不会也没关系,现在不理解响应式编程也没关系,等你学会MVI就理解了,这种只有实际使用过才能深刻理解。我们要不要学,学不会怎么办?
  1、我们要不要学?学,当然要学。
  学会这些编程思想和架构思想,远比学会一个动效实现、学会一个开源库使用,重要的多。
  2、学不会怎么办?
  学不会也没关系,不要焦虑(尤其那些工作不久的小伙伴,学不会属于正常现象)就像《面向对象设计模式》,我们大学那会怎么学都学不会。
  但是工作几年后,回头去学,忽然豁然开朗,下键盘如有神
  就像打通了任通二脉
  MVI,咱第一遍学不会,就等2年,再学一遍
  2年后也没学会,那就再等2年一定要有耐心
  如果还是学不会,那也没关系,因为MVI早晚也会过时等过时了就不用学了
  哈哈哈别笑,正经Android可不会开玩笑的。
  就像rxjava,当年有多少人死活学不会,android开发现在谁还学Rxjava?哈哈哈android官方真的推荐用MVI模式?《应用架构指南》到底改了啥?最新官方的架构指南并没有明确说他们推荐的架构模式就是MVI,但是从思想上来看确实和MVI很神似
  https:developer。android。comjetpackguide?hlzhcn
  但是,这次android架构指南升级,我更愿意称之为MVVM的升级
  因为这次架构指南的升级并不是彻底重构,只是在之前的MVVM的基础上做了些优化。
  升级后的MVVM实现了,响应式编程范式,我们可以面向数据流和变化编程。
  用一张图来总结这次升级的核心思想:
  旧版架构指南MVVMMVVM核心是在MVC的思想上实现了数据驱动UI。
  通过ViewModel将数据(Model)和UI(View)隔离,再通过LiveData将数据和UI的绑定,实现数据驱动UI,只要LiveData的数据修改UI能自动响应更新。
  升级版架构指南
  新版架构指南在旧版的基础上,做了如下调整和建议:
  1。将LiveData组件改成了StateFlow
  对协程的使用更友好。并且更能体现面向数据流开发的思想。
  实际上,依然使用LiveData也没毛病。
  2。ViewModel传递给View的数据限制为View的UIState
  ViewModel从Model层获取数据后,转换为UIState数据,通过StateFlow流向View层。
  UIState的数据面向界面组件而定义的,是能直接控制View组件如何显示的数据。
  所以我们也可以称UIState为界面的状态或者View的状态。
  如下:dataclassNewsUiState(valisSignedIn:Booleanfalse,valisPremium:Booleanfalse,valnewsItems:ListNewsItemUiStatelistOf())
  3。单数据流还是多数据流的选择
  官方指南并没有强制我们使用单流。
  同一个界面应该使用单个StateFlow还是多个StateFlow,需要我们自己判断。
  我们应该根据UIStates数据们之间关联程度来决定多流还是单流。
  单流优缺点都十分明显:
  优点:数据集中管控,会提高代码的可读性和修改的便利性。
  缺点:当数据非常多且复杂时,会影响效率。因为我们没有diff功能,View层不能只更新有变化的数据,只会根据UIState刷新当前界面。
  https:developer。android。comjetpackguideuilayeradditionalconsiderations
  我们再看下官方新版架构图:
  当然不仅仅MVVM可以改造成响应式开发范式,MVP也是可以的。
  不信你看这篇blog:
  https:www。raywenderlich。com817602mviarchitectureforandroidtutorialgettingstartedandroid应用架构,学习路线建议路线每一步都有一些非常优秀的学习资料。
  后面放上来。
  1。理解MVC架构模式的思想【MVC是其他架构模式之爹,他的思想是MVP、MVVM、MVI的基础,学会它是关键步骤】。
  2。理解声明式编程、响应式编程、命令式编程的区别。
  3。学习kotlin的StateFlow组件,的使用:SequenceFlowStateFlow。
  4。学习ViewModel组件的使用(虽然不用ViewModel也能实现MVI架构,但是ViewModel还是值得学习)。
  5。理解DRY(DontRepeatYourself)原则。
  6。理解MVVM(因为官方的MVI模式是基于MVVM的基础改造的)。
  7。学习官方架构指南。
  8。实战。
  在这里就分享一份由大佬亲自收录整理的学习PDF架构视频面试文档源码笔记,高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料
  这些都是我现在闲暇时还会反复翻阅的精品资料。里面对近几年的大厂面试高频知识点都有详细的讲解。相信可以有效地帮助大家掌握知识、理解原理,帮助大家在未来取得一份不错的答卷。
  当然,你也可以拿去查漏补缺,提升自身的竞争力。
  真心希望可以帮助到大家,Android路漫漫,共勉!
  如果你有需要的话,只需私信我【进阶】即可获取

连环画真假白袍将军。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。……矿钢周报铁矿厂库新低,矿价走势偏强来源:混沌天成研究观点概述:供应端,虽然短期铁矿到港尚可,但随着发运量的回落,预计后期到港资源趋减,不过本周国内矿产量回升,整体铁矿供应预期偏稳。需求端,考虑到年末……欧文谈格林普尔冲突这样的事情见过多次了篮网后卫凯里欧文在接受采访时,谈到了勇士前锋德雷蒙德格林拳击队友乔丹普尔之事。欧文表示,他见到过类似的事件,包括在NBA层次都见到过:我习惯了,我习惯了篮球中的一切,我习……夺冠!12战全胜,她们这些优点蔡斌可以学一学北京时间10月16日,2022年女排世锦赛迎来了最终的决战。决赛双方由目前世界第一的巴西女排,迎战卫冕冠军,本届世锦赛11战全胜的塞尔维亚女排,值得一提的是在如此关键的比……国庆期间爬泰山注意提前预约购票,持72小时核酸证明记者薛小东9月29日上午,泰安市政府新闻办公室召开新闻发布会,介绍发布国庆假日期间泰山景区旅游管理服务的相关工作情况。红门(徒步进山,每天5:0024:00)、天外……刺客信条奥德赛《刺客信条:奥德赛》(AssassinsCreedOdyssey)是一款由育碧魁北克工作室开发,育碧发行的动作扮演类游戏,于2018年10月5日发行并登陆PC、PS4、Xbox……iPhone13Pro成本曝光,毛利率高达48,苹果真的良心众所周知,自从iPhone13系列发布后,大家都是说13香,因为苹果这次是加量降价,配置高了,价格相比于上一代还便宜了,所以特别有诚意,很良心。而从实际销售情况来看,这次……五星级酒店推出网课套房,5900元4晚3月16日,南京、上海的部分五星级酒店推出学生网课套餐服务,为居家上网课的学生提供一个独立学习空间,也包括照顾孩子的用餐和生活。3月17日,有记者从两地的相关酒店确认了这一消息……容易发胖的4个时间点,想瘦就要去注意一天中哪个时间段是容易发胖的,这时我们避开,想瘦也是有可能的首先是早上9点前要吃完早餐,老说早餐吃好,可以帮助加速新陈代谢。若是和午餐一块吃,想想自己的胃经过一晚上的空腹……今日来袭!全球首款大疆量产车,车顶配备无人机,真会飞吗?今天说的这款车就是宝骏KiWiEVXDJI。宝骏KiWiEVXDJI是全球第一款搭载大疆车载系统的新能源量产车型,也是宝骏汽车与大疆联合打造的首款车型,新车今日正式首发亮相,即……糖尿病患者每天应该怎么吃才最好?糖尿病患者应该怎么吃早餐呢?相信很多糖尿病人每天最发愁的就是吃饭这件事,尤其是早餐。早餐吃得好,对于糖尿病人来说能够维持血糖的稳定,首先是早餐一定要吃!有些人不吃或者少吃……新中国成立,他为东北带来了科学之光怎么会有人觉得科学枯燥无味呢?还有什么东西能比支配宇宙的自然规律更引人入胜呢?严济慈在夜晚的天空,有一颗小行星闪着微弱的光芒。它在10年前被人类发现,并拥有了自己的……
巨大飞跃!给英伟达1。6万亿个晶体管,它就能承托全球互联网流英伟达(Nvidia)一年一度的GTC大会如期而至,两年一更新的GPU架构Hopper也正式亮相。今年,NVIDIA创始人兼CEO黄仁勋在英伟达新总部大楼发布了一系列新品……如果宇航员不小心掉入太空,尸体会腐烂吗?结果不敢想1961年4月12日,苏联的宇航员加加林,乘坐东方一号飞船进入了太空,他也成为了首次遨游太空的人类。太空,是人类探索的最终目的地,也是最为神秘的地方之一。在太空中,重力几……中科院2023跨年科学演讲科普盛宴超15小时持续上新中国科学院2023跨年科学演讲海报。中科院供图中新网北京1月1日电(记者孙自法)真实大脑和人工智能有什么异同?科技对双碳(碳达峰、碳中和)有何重要作用?玉兔号月球车与祝融……唐明皇29年女主因太美遭人算计,4岁小演员成一线女星1993年,由陈家林执导,刘威、林芳兵等人主演的《唐明皇》开播,没几天就风靡了全国。这部电视剧以唐朝历史为背景,讲述了李隆基的一生,以及他和杨玉环之间的纠葛爱情故事。……精选歌唱主持词开场白三篇主持词要注意活动对象,针对活动对象写相应的主持词。我们眼下的社会,主持人参与的事情越来越多,是不是无从下笔、没有头绪?以下是小编为大家收集的歌唱主持词开场白3篇,欢迎阅读,希望……关于节约用水的倡议书亲爱的老师和同学们:长期以来,人们普遍认为水是取之不尽,用之不竭的,在日常生活用水中不知道珍惜。事实上,我们在日常用水中存在着相当严重的问题,稍加留意就会发现自己身边的确……讲座邀请函范文大学里边总是有很多讲座的,那么它们的邀请函是什么样子的呢?下面品学网小编为大家精心整理了讲座邀请函范文,仅供参考。讲座邀请函范文篇一:国学讲座邀请函一、讲座内容……化学教师教学工作个人总结我积极学习党的方针政策,学习学校下发的文件和学习资料,积极参加学校各项活动,如升旗仪式和各种会议。主动进行各方面的工作。忠诚党的教育事业,为教育教学工作不辞辛苦,努力工作。注重……教师学习最美女教师张丽莉事迹心得体会教师学习最美女教师张丽莉事迹心得体会教师要有献身祖国教育事业的伟大志向甘当人梯甘做陪衬为国家、为社会培养高素质的创造性人才并以此为乐乐此不疲。一个忠诚教育事业的人民教师从……暑期社会实践活动体会幸福的支教生活文刘光红今天,我特别开心,幸福,是我终生难忘的一天。忙碌而快乐的工作,让我晚上就想不起来早上发生了什么,似乎每时每刻都有那么多有意义的事情,遗憾的是我来不及记录下来……关于校园广播稿200字校园广播是向同学们宣传通知和丰富校园生活,让学生放松紧张的课堂氛围。下面有小编整理的校园广播稿200字,欢迎阅读!校园广播稿200字甲:快乐无处不在乙:快乐无……汤姆叔叔的小屋小学读后感暑假里,我阅读了十九世纪美国女作家斯陀夫人的作品《汤姆叔叔的小屋》,让我受益匪浅。《汤姆叔叔的。小屋》讲述了汤姆和乔治?哈里斯夫妇这两种不同性格的黑奴。逆来顺受,听从奴隶……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网