如何在realm android中截断所有表

时间:2015-01-22 09:12:25

标签: android realm

嗨我试图在用户注销时截断android中的所有表。我只使用领域默认路径。

realm = Realm.getInstance(getApplicationContext());

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

5 个答案:

答案 0 :(得分:28)

更新

使用realm.delete(Foo.class)而不建议使用clear()。从0.91.0起 所有@Deprecated方法都将被移除。


来自境界的克里斯蒂安。 只要您关闭了所有打开的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)

答案 1 :(得分:10)

使用realm.delete(Myclass.class);

realm = Realm.getDefaultInstance();

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

这对我有用。

答案 2 :(得分:7)

如果要清除所有表格,可以考虑使用realm.deleteAll()方法:

Realm realm = Realm.getDefaultInstance();
realm.beginTransaction();
realm.deleteAll();
realm.commitTransaction();
realm.close();

答案 3 :(得分:3)

删除所有表格:

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);
        }
    });


}

答案 4 :(得分:0)

如果要清除所有表而不必担心忘记将来可能创建的新表,请执行此操作

// 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();