android - 恢复房间数据库后,Android reyclerview 没有得到更新
问题描述
在恢复屏幕中,我从谷歌驱动器恢复我的 sqlite db(房间数据库)文件。在我回到我的主要活动之后 - recyclerview 显示缓存的数据,而不是显示新的恢复的数据库数据。
我尝试在主要活动中再次初始化我的 ViewModel - 但这没有帮助。
@Override
protected void onResume() {
super.onResume();
setupViewModel(); // re-initialising my ViewModel
Toast.makeText(this, "Your expenses have been restored", Toast.LENGTH_SHORT).show();
}
如果我在恢复后重新启动我的应用程序,我可以在主要活动中看到来自恢复的数据库的数据。
任何帮助,将不胜感激。我现在的解决方法是 - 我可以要求用户在他们从谷歌驱动器恢复数据库后重新启动应用程序。
更新:
private void setupViewModel() {
//Associate ViewModel to this activity
ItemViewModel itemViewModel = new ViewModelProvider(this).get(ItemViewModel.class);
itemViewModel.getItems().observe(this, new Observer<List<Item>>() {
@Override
public void onChanged(List<Item> items) {
ItemsActivity.this.items = items;
itemsAdaptor.setItems(items);
}
});
}
解决方案
重新启动应用程序正在解决我的用例的问题。
我正在使用以下代码重新启动应用程序:
Intent i = getBaseContext().getPackageManager().getLaunchIntentForPackage(getBaseContext().getPackageName());
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
finish();
startActivity(i);
System.exit(0);
理想情况下,关闭和重新打开数据库应该可以工作,但对我不起作用。重新启动应用程序后,它将使用新恢复的数据库。
推荐阅读
- numpy - 向量化参数为不同维度的函数
- powershell - 在自定义 Button 类上使用父事件
- javascript - 在 Vue.js 中显示整个对象
- r - 提供特定值时从数据框中删除因子
- python - seaborn 热图未正确显示
- reactjs - 在 aws LAMBDA 中使用 axios 的参数
- python-3.x - 使用python脚本中的pandas库处理超过1000行的csv文件以合并csv文件时出错
- stackdriver - 我可以将有效负载添加到对 Opsgenie 的 Stackdriver 调用吗
- c# - asp.net core - AddService 使用选项 iniside IServiceCollection 扩展
- azure-devops - Azure Dev Ops 内部部署