【问题标题】:realm java force creating of new realm instance领域 java 强制创建新领域实例
【发布时间】:2017-12-13 14:48:07
【问题描述】:

如果你创建新的 RealmConfiguration 然后调用Realm.getInstance(configuration)

它将使用内部缓存。如果我删除领域文件,然后创建配置调用 Realm.getInstance(configuration) 的新实例将不会再次创建新的领域实例和领域文件(或重新加载它)。我需要强制 Realm 这样做并跳过或清理内部缓存。

【问题讨论】:

    标签: realm realm-java


    【解决方案1】:

    致电realm.close(); 似乎可以完成这项工作。但是您必须确保只捕获一个本地 Realm 变量,否则一个 close() 调用将不起作用。

    不好的例子:

    public void importRealmFile(Context context) {
        Realm realm = contexts.getImportContext().getRealm();
        Storages importStorages = new Storages(contexts.getImportContext().getRealm());
        realm.close(); // doesn't free the realm from the cache
    

    好例子:

    public void importRealmFile(Context context) {
        Realm realm = contexts.getImportContext().getRealm();
        Storages importStorages = new Storages(realm); 
        realm.close(); // works good
    

    【讨论】:

    • getnInstance() 返回的每个实例都需要通过调用close() 来关闭。 Realm 在内部维护一个引用计数器。