Как обрезать все таблицы в реальном мире Android

Привет, я пытаюсь обрезать все таблицы в Android, когда пользователь выходит из системы. я использую только путь по умолчанию для областей.

realm = Realm.getInstance(getApplicationContext());

public void clearDB() {
    Realm.deleteRealmFile(instance);
}

person Dinu    schedule 22.01.2015    source источник


Ответы (5)


Обновить

Вместо этого используйте realm.delete(Foo.class), так как clear() устарело. Начиная с версии 0.91.0 все @Deprecated методы будут удалены.


Кристиан из Realm здесь. Этот подход будет работать, если вы закрыли все открытые экземпляры Realm. Другой подход - очистить нужные таблицы следующим образом:

realm = Realm.getInstance(getApplicationContext());

public void clearDB() {
  realm.executeTransaction(new Realm.Transaction() {
     @Override
     public void execute(Realm realm) {
        realm.clear(Foo.class);
        realm.clear(Bar.class);
     }
  });
}

Вы можете прочитать больше здесь: http://realm.io/docs/java/0.77.0/api/io/realm/Realm.html#clear(java.lang.Class)

person Christian Melchior    schedule 22.01.2015
comment
в какой папке создаются прокси-файлы?? - person Dinu; 22.01.2015
comment
Если вы работаете с Android Studio, он находится здесь: /build/intermediates/classes/debug/io/realm, но вы должны иметь возможность искать их с помощью действия Class (cmd + o на Mac). - person Christian Melchior; 22.01.2015
comment
для затмения, где я должен найти тат один - person Dinu; 22.01.2015
comment
Посмотрите здесь, как это узнать: realm.io/docs/java/0.77.0/ #installation, но по умолчанию это папка .apt_generated в вашем проекте (которая обычно скрыта). - person Christian Melchior; 22.01.2015
comment
Еще одно замечание относительно классов таблиц в базе данных. Вы можете перечислить все классы таблиц с помощью realm.io /docs/java/latest/api/io/realm/ Это полезно, если вам не нужно очищать все таблицы. - person kasurd; 05.03.2016
comment
@mjosh использует delete() вместо clear() начиная с 0.90.1 - person EpicPandaForce; 05.08.2016
comment
Я работаю с отношением «многие ко многим». Будет ли очистка элемента родительского класса очищать также элементы таблицы списка областей? или я должен удалить эти конкретные классы по отдельности - person Ameen Maheen; 06.03.2017

использовать realm.delete(Myclass.class);

realm = Realm.getDefaultInstance();

    realm.beginTransaction();
    realm.delete(SuggestedAppDto.class);
    realm.delete(WifiSpotsDto.class);
    realm.commitTransaction();
    realm.close();

это сработало для меня.

person Sopnil.Shinde    schedule 27.07.2016

Если вы хотите очистить все таблицы, вы можете использовать метод realm.deleteAll():

Realm realm = Realm.getDefaultInstance();
realm.beginTransaction();
realm.deleteAll();
realm.commitTransaction();
realm.close();
person Artem_Iens    schedule 24.10.2016

Удалить все таблицы:

Realm.init(fragmentActivity);
    RealmConfiguration realmConfig = new RealmConfiguration.Builder().deleteRealmIfMigrationNeeded().build();
    Realm realm = Realm.getInstance(realmConfig);
    realm.beginTransaction();
    try {
        realm.deleteAll();
        realm.commitTransaction();
    } catch (Exception e) {
        e.printStackTrace();
        realm.cancelTransaction();
    } finally {
        realm.close();
    }

удалить одну или несколько таблиц:

  public void clearSearchHistory() {

    Realm.init(fragmentActivity);
    RealmConfiguration realmConfig = new RealmConfiguration.Builder().deleteRealmIfMigrationNeeded().build();
    Realm realm = Realm.getInstance(realmConfig);

    realm.executeTransaction(new Realm.Transaction() {
        @Override
        public void execute(Realm realm) {
            realm.delete(Foo.class);
        }
    });


}
person Samira    schedule 14.11.2016

Если вы хотите очистить все таблицы, не беспокоясь о том, что забудете очистить новые таблицы, которые вы можете создать в будущем, просто сделайте это.

// mRealm is your realm instance

mRealm.beginTransaction();
Set<Class<? extends RealmModel>> tables = mRealm.getConfiguration().getRealmObjectClasses();
for (Class<? extends RealmModel> table : tables) {
    mRealm.delete(table);
}
mRealm.commitTransaction();
person Joao Sousa    schedule 18.08.2016