看淘网-高情商聊天恋爱宝典!| 下载蜜小助-恋爱聊天话术

当前位置: 首页> 文章

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

发布时间:2019-08-13 16:33:42 作者:xhs 阅读:742
官方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架构组件视图模型:从过去到现在
相关文章
猜您喜欢
怎么试探前女友想不想复合?

女人是一种让男人捉摸不透的生物,特别是在分手后,就算有复合的想法,表面也会表现的很平静。所以需要男人根据情况自己判断。那到底该怎么去试探前女友想不想复合呢?

2024-02-21

狮子座女生的10个特点,追她之前摸透她的心

狮子座女生可不是那么好追的女生,看上去她平易近人、热情开朗,其实内心却有着自己的小傲娇,狮子座女生的10个特点,追她之前先了解一下吧!

2024-02-21

大街上怎么要女生微信不尴尬,这样要女生乖乖给你

很多时候男生就算在大街上遇到自己喜欢的女生类型,也不敢上来问女生微信,只能看着自己心仪的女生慢慢走远。下面给大家分享大街上怎么要女生微信不尴尬,这样要女生乖乖给你。

2024-02-20

用一个问题测试她喜欢你的方法,女生喜欢你就去追

想知道女生是不是喜欢你,教用一个问题测试她喜欢你的方法:你可以对她说一句话:你好像长胖了一点?(看看女生是什么反应。不过如果男生问出这个问题,可能让女生觉得你情商低,就算女生喜欢你也有一定的风险性)

2024-02-20

女生说心累怎么回复安慰她?分享正确回复方法

女生会在什么情况下说心累呢?可能是她工作上面遇到问题不好解决,让她觉得心累;可能是你对于女生的暗示无动于衷,女生觉得你不落教感到心累。那女生说心累应该怎么回复安慰她呢?

2024-02-19

惹女朋友生气检讨书1000字,哄她不再生你的气

如果男生犯了错惹女朋友生气,那就一定要想办法哄好她,因为是你错了呀。而想要哄好生气的女朋友,那你一定要认识到自己的错误,下面给大家分享惹女朋友生气检讨书1000字,希望能够帮助你哄好你的女朋友。

2024-02-19

婚姻恢复——维持感情让家庭重归平静

婚姻中有幸福的时候,也有不幸福的时候,夫妻应该做到维持好感情,才能顺利让婚姻恢复到幸福的时候,让家庭重归平静。

2024-02-19

怎么追巨蟹座女生?追巨蟹座女生怎么聊天

和巨蟹座女生谈过恋爱之后,就会知道她的内心真的很纯真,不过她性格上的复杂性则是让许多男生疑惑的关键,怎么追巨蟹座女生?追巨蟹座女生的时候要如何聊天呢?

2024-02-18

女朋友说分手后做朋友是什么意思?是真的做朋友么

如果女朋友说分手后做朋友是什么意思呢?如果是还爱着对方那就不应该选择分手,如果是不爱了那大家就应该彻底断了联系,真正深爱过的人是不可能在分手后做朋友的。下面就来分析女朋友的心理。

2024-02-18

暗恋一个人能有多难受?虐心回答句句戳心

暗恋是幸福的,却又是痛苦的,更是难受的,可遇而不可求的爱始终会令人感到绝望,那就是暗恋一个人所体会的难受,明明没有机会却又不想放手真的很痛苦。

2024-02-18

脱单神器
脱单神器
安卓版蜜小助APP 脱单神器
iOS版蜜小助APP 脱单神器

20W+可复制撩妹话术

实战案例+话术+视频+教程

热门文章
口述:公公在梳妆台上给我数次高潮
口述:公公在梳妆台上给我数次高潮
2013-11-11 1069065
二宮琴美、東熱出操翻白眼昏死
二宮琴美、東熱出操翻白眼昏死
2015-03-14 78328
那个午夜 禽兽继父将我压在身下
那个午夜 禽兽继父将我压在身下
2014-04-08 78054
韩国美女主播”钟淑”高清视频精品合集9部 115网盘在线观看
韩国美女主播”钟淑”高清视频精品合集9部 115网盘在线观看
2015-03-11 77288
店长推荐作品 EMP-001 EMPIRE Vol.1 50 波多野结衣 50连发泼溅中 2012年
店长推荐作品 EMP-001 EMPIRE Vol.1 50 波多野结衣 50连发泼溅中 2012年
2015-03-19 75774
留守女人和禽兽公公的不伦性事
留守女人和禽兽公公的不伦性事
2013-12-28 74937
美国男人让我一夜高潮五次
美国男人让我一夜高潮五次
2014-04-29 69845
关牧村与前夫王星军离婚真正原因 关牧村前夫王星军照片家庭背景及个人资料
关牧村与前夫王星军离婚真正原因 关牧村前夫王星军照片家庭背景及个人资料
2014-08-15 64941
公公的精湛床技让我死去活来
公公的精湛床技让我死去活来
2014-04-08 56763
我和小姨子在车上疯狂嘿咻
我和小姨子在车上疯狂嘿咻
2013-12-28 56566