【发布时间】:2018-05-06 02:07:43
【问题描述】:
当我调用 Realm.deleteRealm(config) 时出现异常:
java.lang.IllegalStateException: 不允许删除文件 与一个开放的领域相关联。记得 close() 所有实例 在删除其文件之前的领域
我在 Application.onCreate 中的 Realm.init() 之后调用它,因此没有理由打开其他实例。
public void onCreate() {
Realm.init(this);
Realm realm;
RealmConfiguration config = getConfig();
try {
realm = Realm.getInstance(config); // Will migrate if needed
}
catch (RealmMigrationNeededException e)
{
Realm.deleteRealm(config);
realm = Realm.getInstance(config);
}
}
我看到了这些主题,但看不到解决方案:
https://github.com/realm/realm-java/issues/4552
https://github.com/realm/realm-java/issues/5416
编辑:
我认为我的问题是当我重新启动应用程序以尝试迁移失败时。在应用程序中,我有实例打开但没有关闭,并且无法轻松关闭它们,代码太复杂了。当我重新启动应用程序以通过向模型添加字段来测试迁移异常时,可能会从以前的启动中打开一些实例。
编辑 2:
我试图回到领域 3.0.0(我以前的版本),但我没有这个 IllegalStateException。我目前正在使用 4.2.0。
也许我错过了更新日志中的某些内容..
【问题讨论】:
标签: java android realm realm-migration