首页 > 解决方案 > Android Room 等待插入完成

问题描述

我有一个屏幕,它向表中添加一个条目,然后将用户重定向回主屏幕。在主屏幕中,应用程序向用户显示表中的所有条目。

我按照这里的描述工作,他提到不能从主线程进行插入。因此,我们使用线程池。

现在,我使用线程池触发插入另一个线程并将用户重定向到主屏幕。因此,他可能看不到他插入的数据。

我想要实现的是他会在“添加新数据”片段中等待,并且只有在插入完成后才会被重定向。我会禁用屏幕中的组件并显示“保存”消息。

最好的方法是什么?

标签: androidandroid-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()
    });
}

由于我没有看到您的代码,因此我只能提供帮助。


推荐阅读