Android 捕获RealmFileException

Android 捕获RealmFileException,android,realm,Android,Realm,一小部分用户会遇到此错误: 由io.realm.exceptions引起。RealmFileException无法打开 路径上的域 我做了一些搜索,看起来这是由于一个损坏的领域文件。我输入了以下代码以捕获错误、删除域并创建一个新域: try { final Realm realm = Realm.getDefaultInstance() // realm opened successfully. Do nothing realm.close(); } catch (RealmFil

一小部分用户会遇到此错误:

由io.realm.exceptions引起。RealmFileException无法打开 路径上的域

我做了一些搜索,看起来这是由于一个损坏的领域文件。我输入了以下代码以捕获错误、删除域并创建一个新域:

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());
}
我的问题:

我无法复制此问题,因此无法测试此修复程序有人知道这是正确的方法吗?或者你能建议一个更好的方法吗?

提前感谢

这是否“正确”取决于您。这将重新生成该领域,但我想知道该领域是如何开始被破坏的

假设这是生产中的一个问题,我可能会继续这样做来解决眼前的问题。我会添加一些日志记录,以便您可以看到何时发生这种情况。然后,我将把进一步研究这个问题作为优先事项。注意它发生的时间和速度。寻找有助于确定根本原因的趋势或模式。进一步查看堆栈,看看它是否总是来自同一代码


如果它不在生产环境中,并且不会干扰其他团队成员,那么我会将问题留给他们,因为当存在活动问题时,故障排除更容易。

您有任何日志吗?您是否正在进行迁移或只是初始化领域?另外,您是否将领域数据库存储在外部存储或内部存储中?谢谢您。我们只看到它影响了超过300k的2个用户,但这两个用户都在4.4上,在下一个版本之后,我们将min sdk提高到5.0,所以我想加入一些东西,允许他们继续使用应用程序后期EOL