База данных Android Realm по умолчанию очищена

Как очистить базу данных области по умолчанию в Android? Я пробовал следующий код, но не могу разрешить метод deleteRealmFile.

Способ 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.

person Harshal Bhatt    schedule 24.12.2015    source источник


Ответы (2)


Как описано в исключении, вы должны закрыть все экземпляры области, которые ссылаются на конкретный файл области.

Это означает, что если вы позвонили

Realm realm = Realm.getInstance(config);

Вы должны закрыть Realm, прежде чем удалять его.

realm.close();

Экземпляры Realm основаны на счетчике ссылок, поэтому убедитесь, что у каждого getInstance есть соответствующий close.

Это очень важно, иначе может произойти утечка памяти. См. https://realm.io/docs/java/latest/#controlling-the-lifecycle-of-realm-instances для некоторых примеров.

person beeender    schedule 24.12.2015

Перед Realm.deleteRealm(realm.getConfiguration()); просто добавьте realm.close(), как показано ниже, и это работает как шарм

try {
      realm.close()
      Realm.deleteRealm(realm.getConfiguration());
                //Realm file has been deleted.
} catch (Exception ex){
                ex.printStackTrace();
                //No Realm file to remove.
}
person Vishwajit Palankar    schedule 19.05.2016
comment
это не работает, не работает, выдает java.lang.IllegalStateException: не разрешено удалять файл, связанный с открытым Realm. Не забудьте закрыть() все экземпляры Realm перед удалением его файла. - person shekar; 25.07.2016