首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android  JetPack~ LiveData (一)   介绍与使用

    setValuepostValue支持外部使用(public修饰) 普通类,可以直接new 3、LiveData与MutableLiveData区别 LiveData在实体类里可以通知指定某个字段的数据更新...你可以在你需要被观察的数据里添加. 小注意点:如果不使用postValue(this)会怎么样?...super.setValue(value); } } 可以看到在MutableLiveData包裹的有setValue,postValue方法 当然我们也可以让它不对外暴露setValue,...setValue()   setValue()的特性如下:   1.此方法只能在主线程里调用 getValue()   返回当前值。 注意,在后台线程上调用此方法并不能保证将接收到最新的值。...总结: LiveData一般使用在实体类,MutableLiveData作用在变量上,他们通常和ViewModel结合使用,上面例子过于简单,工作当中可按照业务需要进行调整。

    1.5K20

    Android技术栈(四)Android Jetpack MVVM 完全实践

    这就意味这你所有的kotlin代码都不能依赖注解处理器来为你的代码提供附加功能,但是你可以把这些代码换成等价的Java实现,它们可以工作得很好. 2.2 DataBinding的兼容性 先说一点,DataBinding...super.postValue(value); } @Override public void setValue(T value) { super.setValue...(value); } } 分别是postValuesetValue,其中setValue内部检查线程是否为主线程,不允许在子线程中使用,用了就报错.postValue会将值通过主线程的Handler...这样我们就可以在这个事件流上对事件做手脚了,并且这样还能兼容RxBinding所不能兼容的第三方自定义View....事件总线 RxJava事件流 设计原则: Jetpack中实现的LiveData能够很好的作为数据持有者,并且是生命周期感知的,但是有些时候我们需要向View层发送一些单次的数据,这时LiveData并不能够很好地工作

    3.9K01

    “终于懂了“系列:Jetpack AAC完整解析(二)LiveData 完全掌握!

    当走到onStart()变为活跃时,onChanged被调用,value被onStart()中setValue的value覆盖,所以打印的是onChanged: onStart。...再点开时,走到onStart()变为活跃时,onChanged被调用,value被onStart()中setValue的value覆盖,所以打印的是onChanged: onStart。...然后对添加的结果进行判断,如果mObservers中已经存在此observer key,value中的owner不是传进来的owner,就会报错“不能添加同一个observer却是不同LifecycleOwner...3.3 数据更新 LivaData数据更新可以使用setValue(value)、postValue(value),区别在于postValue(value)用于 子线程: //LivaData.java...到这里观察者模式完整的实现逻辑就梳理清晰了:LivaData通过observe()添加 与LifecycleOwner绑定的观察者;观察者变为活跃时回调最新的数据;使用setValue()、postValue

    4K30

    事件总线方案实践

    发布: 发布者通过 getChannel() 获取消息通道,然后调用 setValue() 或者 postValue() 发布消息。...() 另一个是 postValue(),这两个方法的区别是,postValue() 在内部会抛到主线程去执行更新数据,因此适合在子线程中使用;而 setValue() 则是直接更新数据。...能不能从Map容器mObservers中取到LifecycleBoundObserver,然后再更改version呢?...的bug 9.1 模拟通过发送多个postValue消息出现丢失问题 首先看看MutableLiveData源代码,如下所示,这里重点展示测试数据案例public void postValue(T value...### 10.如何发送延迟事件消息 - 可以知道,通过postValue可以在子线程发送消息,那么发送延迟消息也十分简单,代码如下所示:/\*\* \* 子线程发送事件 \* @param value

    1.9K30

    由浅入深,详解 LiveData 的那些事

    在开始之前,我们先看一段普通的示例代码,如下所示: private val _livedata: MutableLiveData = MutableLiveData() val liveData...: LiveData = _livedata fun manager(){ _livedata.postValue(x) _livedata.setValue(x) } fun...,从而避免非活跃观察者被通知到,节省性能;以及能不能将解绑逻辑让框架自行执行,从而免除调用者手动调用模版代码;自然而然,我们就会想到 Lifecycle ,所以我们可以在 observe() 这里做改动...---- postValue() 用于在非主线程更新 LiveData 中持有的数据,内部最终会调用 setValue() ,具体如下: protected void postValue(T value...当然需要注意的是,Flow 并不能感知 Android 的生命周期,你可能需要再增加一些模版代码,好在Android团队做了各种扩展方法,这个成本在今天也是非常小。

    1.3K20
    领券