MutableLiveData 中 setValue() 和 postValue() 的区别

2023-11-30

有两种方法可以使变化值MutableLiveData。但有什么区别setValue() & postValue() in MutableLiveData.

我找不到相同的文档。

这里是班级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()应该使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MutableLiveData 中 setValue() 和 postValue() 的区别 的相关文章

随机推荐

  • 禁用某些字段的验证

    我有一个 ViewModel 用于添加具有以下属性的用户 电子邮件 密码 确认密码 所有属性均具有必需属性 编辑用户时 我希望不需要密码和确认密码属性 有没有办法在不同的控制器操作中禁用某些属性的验证 或者最好创建一个单独的 EditVie
  • 将一个数字插入已排序的数组中!

    我想编写一段代码 用于将数字插入到排序数组中的适当位置 即数组在插入后仍应保持排序状态 我的数据结构不允许重复 我打算做这样的事情 使用二分搜索找到应该放置该元素的正确索引 通过将所有元素从该索引向下移动来为此元素创建空间 把这个元素放在那
  • 更改 gradle 多模块项目的工作目录

    我是来自 Maven 的 Gradle 新用户 由于多模块构建中的工作目录问题 我在 CI 构建中遇到了一些障碍 具体来说是单元测试 因为我有一些单元测试正在加载与子项目目录相关的资源 如果我单独构建项目 一切都会按预期进行 如果我使用主
  • Google Recaptcha 内部错误

    我正在使用新的 Google reCaptcha API 作为我的 WordPress 实例页面内的联系表单 但是API returns a 500 Internal Server Error message当使用谷歌提供的脚本时 所以 我
  • 为什么在生产中会出现“未定义方法‘分页’”错误?

    在生产服务器上使用 will paginate 时出现此错误 I 2013 10 24T20 17 40 386696 18564 INFO Started GET meals for 190 273 432 55 at 2013 10 2
  • Chrome Cookie API 不允许我使用返回值

    我正在制作一个 chrome 扩展 它在用户登录时设置 cookie 当我尝试使用chrome cookies get 方法回调可以记录结果 但我无法将其传递出回调 function getCookie cookieName var ret
  • 从 NET Core Web 应用程序调用 Microsoft Graph SDK 时出现 MsalUiRequiredException

    我们有一个 NET Core 3 1 Web 应用程序 其中用户在 Azure AD 中使用以下命令进行身份验证微软身份网络包裹 我们正在代表登录用户调用 Microsoft Graph SDK 如下所述here 登录应用程序后 一切正常
  • R 闪亮保存到服务器

    我正在构建一个 R Shiny 应用程序 充当我的团队构建的模拟模型的 GUI 用户定义参数 单击运行 模型会生成一堆图表和表格作为输出 我的问题是 每次用户打开应用程序时 他们都必须再次输入参数 我希望他们能够保存参数并在返回应用程序时再
  • JTextArea.append 的线程安全

    java doc说append方法是线程安全的 但是 我记得当我尝试从不同线程 几个月前 使用附加到文本区域时 我得到了混乱的文本 其中线程 1 将附加一些字符 而线程 2 将附加一些其他字符 因此 我得到的不是 jtextarea 中的
  • Ruby x,y = gets.split.map &:to_i

    我对这行 ruby 代码感到困惑 为什么赋值给 x y 而不是单个变量 x y gets split map to i 这将数组中的第一个条目分配给x 第二个条目y与分配给单个变量相反 在这种情况下 数组将分配给该变量 将多个变量放在赋值的
  • VS安装项目:在不同目录中安装文件

    我有 Visual Studio 安装项目 我想将我的文件之一安装到驱动器 C 上的某个目录 我该怎么做 一个例子 我正在将我的应用程序安装在 C MyApp 中 以及一个文件 settings ini 到 C Settings MyApp
  • 分配给 Setparent(..) 后 Showmodal 出现问题

    我创建了两个应用程序 MainApps 和 SubApps SubApps 有一个模式类型对话框 例如登录 注销表单等 并且工作正常 将其附加到 MainApps 后 模态对话框显示为正常的框形式 它的行为类似于 DIALOG SHOW 而
  • Google登录API:强制输入密码?

    我在我的网站上使用了多个社交提供商 包括 Google 每次用户请求我的一项操作时 我都会询问 Google 帐户的密码 这是出于安全原因 通过 Facebook 我们可以发送auth type reauthenticate范围 Googl
  • 使用具有不同 xlabel 的 Pandas 绘制日期时间条形图

    我想绘制一个条形图 其中带有条形图的 pandas DataFrame 的每一列中只有几个数据条目 这是成功的 但它不仅有错误的 y 轴限制 而且还使 x 刻度间隔非常紧密 使得图表毫无用处 我想将步速更改为大约每周左右 并且仅显示日 月和
  • CKEditor:设置光标/插入符位置

    如何在 CKEditor 3 x 中定位插入符号 我有 2 个位置 我想在这两个位置上使用 insert HTML 伪代码 editor setCaret 20 function does not exists editor insertH
  • CSS 不适用于 django 密码表单字段

    我从网上下载了一个CSS模板 我能够将除密码字段和按钮样式之外的所有内容链接到我的 Django 代码 我错过了什么步骤 我已阅读 Django 文档 并且正在使用 attr 方法将 css 属性添加到我的 Django 表单字段 在我的P
  • 如何在 Linux/OS X 上打印 wstring?

    我怎样才能打印这样的字符串 a c e 在控制台 屏幕上 我试过这个 include
  • 为什么当我执行performSelectorInBackground:时没有自动释放池?

    我正在调用一个在后台线程中运行的方法 self performSelectorInBackground selector loadViewControllerWithIndex withObject NSNumber numberWithI
  • 每个 Flash 上传器都会给出错误的进度值

    我去年初为内部网站编写的文件上传脚本在许多机器上表现得很奇怪 在某些机器上它始终工作正常 而在其他机器上它始终表现不佳 我在使用 YUI Uploader SWFUpload 2 2 和 2 5a 和 Uploadify 时遇到完全相同的问
  • MutableLiveData 中 setValue() 和 postValue() 的区别

    有两种方法可以使变化值MutableLiveData 但有什么区别setValue postValue in MutableLiveData 我找不到相同的文档 这里是班级MutableLiveData安卓的 package android