看淘网
当前位置: 首页> 文章> 官方Android架构组件视图模型:从过去到现在

官方Android架构组件视图模型:从过去到现在

发布时间:2019-08-13 16:33:42 作者:xhs
官方Android架构组件视图模型:从过去到现在:('在2017年Google I/O大会上,Google介绍了一系列架构组件,如超链接生命周期、视图模型、LiveData和其他更适合MVVM模式开发的组件。\n本文的主要特点是超链接视图模型,可能是一些朋友们会问:\n\nhyperlink viewmodel这样一件简单的事情,从使用API到源代码分析,相关内容都是烂街,你能从这篇文章中找到什么?\ N \n i不能争辩,事实上,读这篇文章,你可能已经有了MVVM的代码变得熟练了,甚至经历了已完成项目的洗礼,但我仍然想尝试做一个大胆的写作-即使是对于POOF的MVVM模式的想法,或者已经熟练地使用了MVVM,这篇文章Le还尝试为您提供一些东西,至少阅读时不会感到无聊。\nViewModel的History\nViewModel或Hyperlink MVVM(Model View ViewModel)不是一个新术语。它的定义源自前端,表示数据驱动视图的概念。\n例如,我们可以用字符串类型的状态表示文本视图。同样,我们可以通过list类型的状态来维护RecyclerView列表。在实际开发中,我们通过观察数据的状态来维护用户界面的自动更新。\n每当字符串的数据状态更改时,RecycleView将自动刷新列表。同样,每当数据源列表发生更改时,RecyclerView将自动刷新列表:\n改为ESS代码。\n这是如何提出ViewModel概念的。我把它描述成一个状态存储,它在UI中存储各种状态。以登录界面为例,很容易想到两种最简单的状态:类login viewmodel \nval username:string///\nval password:string//\n \n\n如果不陷入代码细节,我们现在知道viewmodel的重点是维护数据状态。在谷歌推出ViewModel组件之前,让我们看看17年前安卓系统中各种形式的MVVM。在独立规则时代,百花齐放\n Google在IO 2015上推出的数据绑定库的发布直接推动了Android空间中MVVM的发展。开发人员可以通过使用伪Java代码将数据状态绑定到XML布局文件来创建MVVM开发过程的闭环:\n?xml version=“1.0”encoding=“utf-8”?>\ n\n\n\n\n \n\n绑定到视图的数据绑定方法通过使用伪Java代码将UI逻辑直接添加到XML布局文件中而引起激烈争论。到目前为止,数据绑定对于许多开发人员来说是可以理解的不可接受的,因为它确实很难定位语法错误和运行时崩溃。\mvvvm模式不一定依赖于数据绑定,但是除了数据绑定之外,开发人员在时间-到目前为止,一些MVVM开发人员坚持不使用数据绑定,而是使用富生态系统中的RXJava(或其他)来替换数据绑定的数据绑定。\n如果在数据绑定库时至少参考官方数据绑定,则视景模型的标准化很难,基于管理层对视图模型的状态的基本约束,不同的项目,不同的依赖库,以及不同的开发人员,在最终的代码中实现状态管理的方式是非常不同的。\n例如,一些开发人员将ViewModel层定义为一个接口,如mvp:\interface-iviewModel\n\n打开类baseviewModel:iviewModel\n\n其他开发人员(如此超链接repo)直接从ViewModel层继承可观察属性(如从数据绑定库中可观察到的baseobservable),并保持引用对上下文的引用:\nPublic Class CommentViewModel扩展了BaseObservable \n \n@bindingadapter(“containerMargin”)\nPublic Static void SetContainerMargin(View,Boolean IStoplevelComment)\n/…\n \n \n \n有一千个小村庄供一千人使用,不同的MVVvM有不同的实现它们的不同方法。这种代码风格充满了鲜花,很难严格地统一开发风格,导致代码质量参差不齐,代码可读性极不相同。\n数据绑定本身使代码的可读性降低,因此它实际上是国家的北部和南部。D思想正在涌出——就思想碰撞而言,这不是一件坏事,但对我来说,谁想了解MVVM,'29AD2ED42D9DD7A,'FYYYNZA5LL96PCP3TRPUJKRCTBXWTCP',8,“令人眼花缭乱的是,在学习接触的过程中,我也不可避免地走了很多弯路。\n2.谷歌的尝试将ViewModel标准化\n我们都知道,Google在去年的I/O会议上推出了许多体系结构组件,而超链接ViewModel就是其中之一,也是本文的主题。\n有趣的是,与眼睛相比,ViewModel的知名度非常低。-捕获Lifecycle和LiveData,这主要提供以下功能:\n\n在配置更改(如水平和垂直屏幕旋转)期间自动保留其数据\n\n活动、片段等UI组件之间的通信\n\n如果我不得不吹捧很好,ViewModel是,因为它表面上没有显示很多功能,但幸运的是,到目前为止,我已经花了一些时间讲述了以前的ViewModel的故事,这是对其余文本不可或缺的前共享形状。\n3。在此之前,ViewModel的困境\n您可能不知道官方ViewModel发布之前,MVVM开发模式中ViewModel层的一些尴尬方面,但实际上我尝试用叙述性的术语来描述它们:\n3.1在正式发布之前,更规范化的抽象接口\n视图模型的易用性、视图模型层的基类各不相同,内部依赖性和公共逻辑也各不相同。新的viewModel组件使用viewModel(或其子类,androidviewModel)直接标准化viewModel层。\n同时,官方google建议viewModel保持纯业务代码,不包含任何视图层(活动或片段)或引用的生命周期,这确保了viewModel内部代码的可测试性,避免因为相关引用的上下文导致测试代码难以编写(例如,表示层代码测试的MVP需要额外的成本,例如依赖项注入或模拟,以确保单元测试)。\n3.2更方便保存数据\n系统响应用户交互或重建用户无法控制的组件。当一个组件被破坏和重建时,与原始组件相关的数据也会丢失——最简单的例子是屏幕的旋转。如果数据类型简单,数据量小,可以通过onSJavaeInstanceState()存储数据,重建组件后,可以通过onCreate()从中读取和恢复包。但是,如果您有大量不便于序列化和反序列化的数据,则上述方法将不起作用。\n在这种情况下,ViewModel的扩展类将自动保留其数据,如果重新创建活动,则它将接收相同的ViewModel实例。和以前一样。当活动中断时,框架调用viewModel的onCleared()方法来释放资源。\n数据化)。\n ViewModel将本地单例保留在相应的生命周期范围内,这将导致一个更有用的功能,即UI组件(如片段和活动)之间的通信。\n3.3更方便的UI组件之间的通信\n这对于一个活动中的多个片段相互通信。如果viewModel的实例化范围是活动的生命周期,那么两个片段可以保存同一个viewModel实例,这意味着数据状态的共享:public class afragment extends fragment \nprivate commonviewModel;\npublic void onActivity created()\nmodel=视图模型提供程序。(getActivity())的,get(commonViewModel)。class);\n \n \n \n公共类bFragment扩展片段\n private commonviewModel模型;\n创建的public void OnActivity()\n model=viewModelProviders。(getActivity())的,get(commonViewModel)。class);\n \n \n \n \n上面的两个fragments getactivity()返回相同的主机活动,因此这两个fragments返回相同的viewModel。\n \n我不知道您是否正在阅读此内容,但您是否曾考虑过\n \n viewModel提供哪些功能使您感觉不到彼此之间的连接?\ n \n这就提出了一个问题:这些属性的性质是什么?\ N \n4.ViewModel:状态保持和维护\n ViewModel层的基本职责是维护UI的状态,并最终维护相应的数据--毕竟,无论是MVP还是MVVM,UI的表示都是数据的呈现。\n\n1定义viewModel的基类,建议通过保存livedata来维护已保存数据的状态;\n2。当活动屏幕旋转时,视图模型不会被破坏,从而降低了维护状态(数据存储和读取、序列化和反序列化)的代码成本。\n3。在相应的范围内,被保证只产生相应的唯一实例,多个片段保持相同的数据状态,大大降低了数据T的编码成本。官方Android架构组件视图模型:从过去到现在
蜜小助-恋爱/撩妹聊天必备神器
蜜小助App

内置20W+恋爱聊天话术

一键复制解决尬聊话题

相关推荐
喜欢的女生喜欢白色,要送什么礼物给她 什么是互补型爱情 女生说自己胖了,高情商都这么回复! 女生说自己胖,要怎么高情商回复
热门推荐
1
口述:公公在梳妆台上给我数次高潮
口述:公公在梳妆台上给我数次高潮

我与老公结婚三年了,老公是个特别老实的男人,平时很听我的话,也很疼爱我。我是一个快要30的女人,一个普通的白领,都说这个年纪的女人如狼似虎,一点都没有说错。脱去了20岁懵懂的天真,现在的我对夫妻生活的要求真的越来越多了。老公是一位公司主管,平时工作特别忙,而且经常因为业务需要出差,就是晚上能够按时回来,基本上都觉得一天的工作太累,而我们夫妻之间的亲密事让他有些力不从心。我不得不说,综合各方面来说,...

2
二宮琴美、東熱出操翻白眼昏死
二宮琴美、東熱出操翻白眼昏死

昨天才藉著「白鳥真衣」(宮沢まき)的狀況說明了現在東熱的困境,今天筆者再介紹另一位已經被辨識出身分的「二宮琴美」老調重談,看看東熱近來的餌食有多「菜」吧:她是才剛被發表、演出「鬼逝」的新鮮餌食,所謂的「鬼逝」意思很簡單,就是「把妳幹到死」,所以除了男優演出會格外粗暴外女優也會被搞到「再起不能」,而這...

3
那个午夜 禽兽继父将我压在身下
那个午夜 禽兽继父将我压在身下

我是爸妈的私生女,他们谈恋爱的时候,意外怀孕生下了我。后来,爷爷奶奶死活不同意爸爸娶我妈妈。妈妈说,如果我是个男孩就好了。你要是个男孩,你爷爷肯定不会让你爸爸抛弃我们。最后,爸爸给了妈妈一笔钱,相互拥抱着,哭了一夜,就分开了。妈妈坚持把我生了下来。不久,就听说爸爸和别的女人结婚了。两年以后,妈妈带着我嫁给了一个出租车司机。继父比我妈妈大5岁,很老实,对我不错,就像对自己的亲生女儿一样。当然,他还没...

4
韩国美女主播”钟淑”高清视频精品合集9部 115网盘在线观看
韩国美女主播”钟淑”高清视频精品合集9部 115网盘在线观看

第一次看到韩国美女主播的视频,是两年前在同事电脑上看到的,那是一部朴妮唛的直播视频。当时给我的感觉就是眼前一亮,感觉这身材和脸蛋能够秒杀很多当红明星啊!后来才知道她叫朴妮唛,韩国人。也关注过一段时间,搜集了一些视频,同时了解到韩国有很多像朴妮唛这样的美女主播。后来慢慢的会搜集一些这样的视频,可是基本...

5
店长推荐作品 EMP-001 EMPIRE Vol.1 50 波多野结衣 50连发泼溅中 2012年
店长推荐作品 EMP-001 EMPIRE Vol.1 50 波多野结衣 50连发泼溅中 2012年

店长推荐作品EMP-001EMPIREVol.150波多野结衣50连发泼溅中2012年度亚洲无码最佳A片第一名

6
留守女人和禽兽公公的不伦性事
留守女人和禽兽公公的不伦性事

我结婚一年多了,非常郁闷,整天提心吊胆的,原因是老公刚转成自愿兵未能复员。现如今我和公公两人生活在家,很不习惯,也很为难。其实公公这个人挺好的,只是孤男寡女长期这样子住在一起,不管别人如何评论,自己也总觉得不得劲儿。今年我23岁了,比老公还大1岁。嫁他时就是公公说的媒。公公是我们学校的会计,在这里工作10多年了,口碑蛮不错,是个老好人,我是前年毕业后被派遣到这里来实习的。我家在农村,父母都是老实巴...

最新推荐
吵架先认错感觉没备注
吵架先认错感觉没备注
2023-10-20
男生想要的安全感是什么样的
男生想要的安全感是什么样的
2023-10-16
喜欢的女生喜欢白色,要送什么礼物给她
喜欢的女生喜欢白色,要送什么礼物给她
2023-10-08
什么是互补型爱情
什么是互补型爱情
2023-10-08
女生说自己胖了,高情商都这么回复!
女生说自己胖了,高情商都这么回复!
2023-09-28
女生说自己胖,要怎么高情商回复
女生说自己胖,要怎么高情商回复
2023-09-22
热点推荐