Стандартната база данни на 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 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, преди да изтриете неговия файл. - person shekar; 25.07.2016