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);
}
同时显示一些进度条
我正在使用 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);
}
同时显示一些进度条