ユーザーがログアウトボタンを押し、別のユーザーがログインしたときに新しいデータをロードするときにデータベース全体をクリアしたいのですが、
try {
Realm.deleteRealm(realmConfiguration);
} catch (Exception ex){
throw ex;
}
また
try {
Realm.deleteRealmFile(getActivity());
//Realm file has been deleted.
} catch (Exception ex){
ex.printStackTrace();
//No Realm file to remove.
}
しかし、どちらのコードも機能しません。前もって感謝します。
Realm.deleteRealm()
を呼び出すときは、すべてのRealmインスタンスが閉じられていることを確認する必要があります。そうでないと、何も削除せずに例外がスローされます。このメソッドを呼び出すと、すべてのレルムファイルが削除されます。つまり、すべてのオブジェクトとスキーマが削除されます。すべての例外をキャッチすることは、一般的な場合には悪い習慣です。
または、トランザクションブロックで Realm.delelteAll()
を呼び出すことができます。これには、すべてのRealmインスタンスを閉じる必要はありません。スキーマをクリアせずに、レルム内のすべてのオブジェクトを削除します。また、すべての例外をキャッチしないでください。
保存するデータベースが他にないことが確実な場合は、他のすべてのデータも削除できます。この回答に従うことができます プログラムでアプリケーションのデータを消去する