问题描述
这里是 Android 中 viewmodel
和 mutablelivedata<>
的新手,遇到了逻辑/操作顺序,我想知道我是否在接近这个错误。
背景: 详细信息页面,显示来自公共数据对象的字段。此页面显示的数据全部来自三个外部来源和 HTTP/GET 调用。一个调用失败不应阻止其他调用正确加载数据。这意味着当用户加载页面时,将在返回调用时填充数据。三个调用完成后,我将对象发送到一个ObjectBox数据库中。
我遇到的问题是 HTTP 返回都在后台线程上,所以我使用 .postValue()
来保存数据。当最后一次调用返回时,我将 viewmodel 中的值加载到我的 ObjectBox 对象中,并将其保存到数据库中。
当然,.getValue()
上的 mutablelivedata
有以下注意事项:
Note that calling this method on a background thread does not guarantee that the latest value set will be received.
发生了什么 - 在 ObjectBox 代码运行时,在从上次 GET 调用更新后不久,.getValue()
调用并不总是返回正确的数据。
是否有对 viewmodel 的调用,我可以使用它来指示字段已完成更新,然后更新 ObjectBox?我是否一直在等待所有调用完成后再显示任何内容(因此在更新显示之前执行我的数据库保存)?我可以在后台线程中使用 .setValue()
来确保数据在那个时候更新吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)