一小部分用户遇到此错误:
Caused by io.realm.exceptions.RealmFileException Unable to open a realm at path
我已经进行了一些搜索,看起来这是由于 Realm 文件损坏所致。我已放入以下代码来捕获错误、删除 Realm 并创建一个新 Realm :
try {
final Realm realm = Realm.getDefaultInstance()
// realm opened successfully. Do nothing
realm.close();
} catch (RealmFileException e) {
// database corrupted. delete database
Realm.deleteRealm(NbcRealmConfiguration.getInstance().getRealmConfiguration(getApplicationContext()));
Realm.setDefaultConfiguration(new RealmConfiguration.Builder()
.name(getString(R.string.database_name))
.schemaVersion(REALM_SCHEMA)
.deleteRealmIfMigrationNeeded()
.build());
}
我的问题:
我无法重现此问题,因此无法测试此修复。 有谁知道这样做是否正确,或者您能提出更好的方法吗?
提前致谢
最佳答案
这是否是“正确”的方式取决于您。这将使 Realm 重生,但我想知道 Realm 是如何开始腐败的。
假设这是生产中的一个问题,我可能会继续这样做以解决眼前的问题。我会添加一些日志记录,这样您就可以看到发生这种情况的时间。然后我会优先考虑进一步研究这个问题。注意它发生的时间和速度。寻找可以帮助您确定根本原因的趋势或模式。进一步查看堆栈,看看它是否总是来自相同的代码。
如果它不在生产环境中,并且不干扰其他团队成员,那么我会留下这个问题,因为当存在一个活跃的问题时,故障排除会更容易。
关于android - 捕获 RealmFileException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50003145/