web-dev-qa-db-ja.com

Androidでレルムのデータベースをクリアする方法

ユーザーがログアウトボタンを押し、別のユーザーがログインしたときに新しいデータをロードするときにデータベース全体をクリアしたいのですが、

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.
    }

しかし、どちらのコードも機能しません。前もって感謝します。

15
sumit mehra

Realm.deleteRealm() を呼び出すときは、すべてのRealmインスタンスが閉じられていることを確認する必要があります。そうでないと、何も削除せずに例外がスローされます。このメソッドを呼び出すと、すべてのレルムファイルが削除されます。つまり、すべてのオブジェクトとスキーマが削除されます。すべての例外をキャッチすることは、一般的な場合には悪い習慣です。

または、トランザクションブロックで Realm.delelteAll() を呼び出すことができます。これには、すべてのRealmインスタンスを閉じる必要はありません。スキーマをクリアせずに、レルム内のすべてのオブジェクトを削除します。また、すべての例外をキャッチしないでください。

34
beeender

保存するデータベースが他にないことが確実な場合は、他のすべてのデータも削除できます。この回答に従うことができます プログラムでアプリケーションのデータを消去する

0
erluxman