问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Android LiveData粘性,粘连,倒灌

发布网友 发布时间:2023-06-07 16:44

我来回答

1个回答

热心网友 时间:2024-01-21 21:46

工作机制:每次改变LiveData数据都会对数据版本号加1,并触发版本号小于数据版本号的观察者监听,触发后观察者的版本号与数据版本号一致。

粘性事件:更新数据后,观察者再订阅,新注册的观察者版本号为-1小雨数据版本号,所以注册时会触发一次数据监听。

数据粘连:LiveData的激活状态标识,会在对应的LifecyOwner执行onStart后设置为true,执行onDestroy后设置为false,在未激活状态下无论发生多少次改变,只有最后一次数据会发送给观察者。

数据倒灌:由于LiveData的激活状态标识先变为false,再变为true,导致触发小于数据版本号的所有观察者的监听。常见场景为:使用ViewModel持有LivaData,并在生命周期内创建监听对象,则在Activity由于屏幕翻转等配置变化引发onDestroy时,ViewModel不会执行clear,因此保留了内部的LiveData,而在生命周期内重新创建监听对象的版本号为-1,所以在onStart之后会触发观察者监听。

解决方案:
1.修改version
2.复写LiveData
3.包装事件,事件内带处理状态

2022-04-11
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
谁告诉我一下,韩语中,“遵命”怎么说 想开个甜品店,不知道哪里可以学习呢 如何取消微信新号绑定的手机号? 翼支付-翼建钟情活动内容是什么? 怎么参加翼支付“翼建钟情”活动? 翼支付--翼建钟情立减10元-建行这次活动有具体名额限制吗? 西凤酒是哪里的 货车总重量不超过二十吨就不算超载吗? 自卸货车上装有二十多吨货已经有四五天了对货车能伤害哪个部位? 如何回复别人的"忙里偷闲"? 凌家塘批发市场有没有预制菜卖 MutableLiveData和LiveData 成都香茅预制菜是骗人的吗 MutableLiveData与LiveData区别:可变与不可变 Android LiveData和MutableLiveData使用详解 成都川菜工业园预制菜代工厂有哪些 歌词“我们的爱像断线的风筝”是哪首歌中的? 歌词一堵墙是什么歌 一堵兰墙为什么是剧本 一堵兰墙是哪个大学的 一堵兰墙为什么不更新了 协议内容与实际情况不符 ...听过的歌,断网后有几首不能听,点击显示该歌曲未缓存,这是什么... 合同盖章不符属于违反什么 梦见又大又美丽的房子 抖音火山版开直播对账号有好处吗? 下载易语言源码后用静态编译还是编译 编译后会出现什么后果 运行后会... 医保卡可以报销看牙的费用吗? e语言怎样生成软件? 职工医保报销牙科 LiveDataBus 麻烦一些请您解答汇编语言题目 请问 微机编程中 ARY1 DB 03H,05H,07H,06H,09H,05H,08H,02H LEN1 EQU... 汽车车牌写着WX111是什么意思啊? 如何让快手号不能复制 谁有StylePix中文版的教程啊,我下的是中文破解版的,这个跟PS用法真不... 微机原理,汇编程序题:从变量ARRAY开始的区域,存放10个WORD类型数,找出... PixPlant这个软件的3D预览功能我笔记本显示不出来,我就是想知道是我显 ... 编写一个JAVA程序,在一个4x4的矩阵中随机填入0和1,打印该矩阵,找到第... 睡过了网课没签到找什么理由 验光师二级技师证是什么样的 拉美团了货有时效吗 战火勋章终结奖励什么 外卖站点绩效由什么构成的呢 在家上网课早上没签到编一个理由? 战火勋章80升90要多少子弹 战火勋章60级升70级需要多少子弹 茶色玻璃配黑框还是金框 铝合金酒柜价格多少钱 女人不主动朕系我在朋友圈里发了一双眼睛称自己领会是什么意思?