美文网首页
LiveData多次postValue,onChanged只收到

LiveData多次postValue,onChanged只收到

作者: ana生 | 来源:发表于2022-03-17 15:44 被阅读0次

我们先来看下postValue的内部源码实现:


image.png

postTask = mPendingData == NOT_SET,第一次调用postValue,postTask 为true,因为:


image.png
然后将我们的value赋值给全局变量mPendingData,接下去判断,然后执行mPostValueRunnable:
image.png

这里面将mPendingData重新赋值给newValue并把mPendingData 重置为NOT_SET,这样一次完整的发送就结束了。
因此当我们多次postValue时,除了第一次,后面的几次会把mPendingData 重新赋值,而postTask都是等于false会被return,并不会执行mPostValueRunnable方法。
总结就是在第一次还没执行完mPostValueRunnable时,mPendingData被不断的重新赋值,导致真正执行到mPostValueRunnable时,mPendingData值就是你最后一次postValue的值。

相关文章

网友评论

      本文标题:LiveData多次postValue,onChanged只收到

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