android - Android Room 等待插入完成
问题描述
我有一个屏幕,它向表中添加一个条目,然后将用户重定向回主屏幕。在主屏幕中,应用程序向用户显示表中的所有条目。
我按照这里的描述工作,他提到不能从主线程进行插入。因此,我们使用线程池。
现在,我使用线程池触发插入另一个线程并将用户重定向到主屏幕。因此,他可能看不到他插入的数据。
我想要实现的是他会在“添加新数据”片段中等待,并且只有在插入完成后才会被重定向。我会禁用屏幕中的组件并显示“保存”消息。
最好的方法是什么?
解决方案
只是不要直接在 UI 线程中触发导航。然后你就明白了。这是一个例子:
// In your insert Runnable
public void run() {
// Your database insertion code etc.
. . .
new Handler(Looper.getMainLooper()).post(() -> {
// Here, trigger your fragment back transaction e.g. popBackStack()
});
}
由于我没有看到您的代码,因此我只能提供帮助。
推荐阅读
- podio - Podio Contact API 取消集成
- batch-file - 终止时关闭批处理文件打开的文件
- c# - 在 UpdatePanel 中将项目添加到 ListBox
- html - 如何将复制按钮链接到表格中的单元格?
- r - 如果任何特定列集中的值满足特定条件,则返回整行
- segmentation-fault - Ada/C:没有核心转储的主要之前的段错误。Valgrind 大小为 4 的无效读取
- ios - 快速使用带有服务的协议
- python - Pandas 按值过滤 df
- jquery - 单击图标翻转按钮(登录/注册)
- raspberry-pi - 为 Debian64 和 Debian armhf 交叉编译 WxWidget 应用程序