2015-12-24 8 views
5

アンドロイドのデフォルトレルムデータベースをクリアするには?私は次のコードを試しましたが、メソッドdeleteRealmFileを解決できません。Androidレルムのデフォルトデータベースクリア

方法1:

try { 
    Realm.deleteRealmFile(context); 
    //Realm file has been deleted. 

} catch (Exception ex){ 
    ex.printStackTrace(); 
    //No Realm file to remove. 
} 

私は設定を使用して削除しようとしました。

方法2:

try { 
    Realm.deleteRealm(realm.getConfiguration()); 
    //Realm file has been deleted. 
} catch (Exception ex){ 
    ex.printStackTrace(); 
    //No Realm file to remove. 
} 

されるが、エラーを与える:説明例外として

java.lang.IllegalStateException: It's not allowed to delete the file associated with an open Realm. Remember to close() all the instances of the Realm before deleting its file. 

答えて

2

、あなたは特定のレルムのファイルを参照するすべてのレルムのインスタンスを終了する必要があります。あなたはあなたが前にそれを削除レルムを閉じる必要があり

Realm realm = Realm.getInstance(config);

を呼び出した場合

これは、を意味します。

realm.close();

とレルムインスタンスが参照カウンタに基づいているので、すべてのgetInstanceが一致closeを持っていることを確認してください。

これは非常に重要です。そうしないとメモリリークが発生する可能性があります。 いくつかの例についてはhttps://realm.io/docs/java/latest/#controlling-the-lifecycle-of-realm-instancesを参照してください。 Realm.deleteRealm(realm.getConfiguration());

6

は、すぐ下のようなrealm.close()を追加し、それはjava.lang.IllegalStateExceptionを投げ、これが動作しない機能していない魅力

try { 
     realm.close() 
     Realm.deleteRealm(realm.getConfiguration()); 
       //Realm file has been deleted. 
} catch (Exception ex){ 
       ex.printStackTrace(); 
       //No Realm file to remove. 
} 
+1

ように動作します:オープンレルムに関連付けられているファイルを削除することが許可されていません。ファイルを削除する前に、レルムのすべてのインスタンスを閉じる()ことを忘れないでください。 – shekar

関連する問題