有两种方法可以使更改值为MutableLiveData.但是101102MutableLiveData有什么不同呢?

我找不到同样的文件.

这是安卓MutableLiveData级.

package android.arch.lifecycle;

/**
 * {@link LiveData} which publicly exposes {@link #setValue(T)} and {@link #postValue(T)} method.
 *
 * @param <T> The type of data hold by this instance
 */
@SuppressWarnings("WeakerAccess")
public class MutableLiveData<T> extends LiveData<T> {
    @Override
    public void postValue(T value) {
        super.postValue(value);
    }

    @Override
    public void setValue(T value) {
        super.setValue(value);
    }
}

推荐答案

根据文件:

setValue():

设置值.如果存在活动的观察者,则该值将为

postValue():

将任务发布到主线程以设置给定值.如果在主线程执行已发布任务之前多次调用此方法,则只会调度最后一个值.

总而言之,关键区别在于:

必须从主线程调用setValue()方法.但是,如果您需要从后台线程设置值,则应该使用postValue().

Android相关问答推荐

懒惰的垂直网格中盒子的重量-Jetpack组合

Android应用程序中的背景问题

译码BLE血糖仪特征值

StateFlow集合AsState没有更新他的值Jetpack Compose导航

SmsMessage如何在Kotlin库中工作?

如何检测低性能 Android 设备进行条件动画渲染?

Android Studio 在 list 文件中已经声明了活动类,但仍出现无法找到明确的活动类的错误

是什么导致调用 Firebase 服务器?

错误:无法安装应用程序:INSTALL_PARSE_FAILED_MANIFEST_MALFORMED (React-Native-Android-Studio)

如何删除 Jetpack Compose 中按钮的左边框?

如何在 Jetpack Compose 中创建无限pager

Jetpack Compose 部分或开放侧边框

观察软键盘可见性,打开/关闭 Jetpack Compose

Jetpack Compose Alignment - 误解了 alignBy 修饰符

如何在行/列/卡片 compose 中添加左边框

Android Compose:LazyColumn 和 Column with verticalScroll 的区别

Android 12 通过包管理器中断 APK 安装?

协程是否在 if 条件下保持秩序?

复用 RecyclerView 适配器,避免不必要的 API 调用

如何满足设备内框架的无效 Wear OS 屏幕截图Wear OS 表盘策略违规?