Android 在主线程上检索 LiveData

Android retrieve LiveData on main thread

我正在使用 Room、LiveData 和 MVVM,但遇到了问题。我想,我可能在这里做错了。

我想检索 LiveData 并在主线程上使用它。我写了一个观察者,它从数据库中请求 activity 额外内容并将它们放入 Intent。之后我想开始 activity.

看起来是这样的:

Intent intent = new Intent(this, c);
if (activityDesc.isHasExtras())
{
    model
        .getActivityExtras(this, activityDesc)
        .observe(MainActivity.this,
            activityExtras -> activityExtras.forEach(e -> intent.putExtra(e.getKey(), e.getValue())));
}
startActivity(intent);

现在 activity 已启动,但为时已晚,因此主线程启动了 activity,然后才将 extras 放入意图中。

在这种情况下等待 LiveData 后台进程完成的正确方法是什么?

您可以等待您的数据库工作完成,然后再启动另一个 activity

if (activityDesc.isHasExtras()){
model
    .getActivityExtras(this, activityDesc)
    .observe(MainActivity.this, activityExtras -> {
Intent intent = new Intent(MainActivity.this, c);
activityExtras.forEach(e -> intent.putExtra(e.getKey(), e.getValue())));
startActivity(intent);
}

同时显示一些进度条