美文网首页
Android LiveData粘性,粘连,倒灌

Android LiveData粘性,粘连,倒灌

作者: 周_0717 | 来源:发表于2022-05-27 14:39 被阅读0次

    工作机制:每次改变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

    相关文章

      网友评论

          本文标题:Android LiveData粘性,粘连,倒灌

          本文链接:https://www.haomeiwen.com/subject/asgmprtx.html