【发布时间】:2015-01-22 09:12:24
【问题描述】:
您好,当用户注销时,我试图截断 android 中的所有表。我只使用领域默认路径。
realm = Realm.getInstance(getApplicationContext());
public void clearDB() {
Realm.deleteRealmFile(instance);
}
【问题讨论】:
您好,当用户注销时,我试图截断 android 中的所有表。我只使用领域默认路径。
realm = Realm.getInstance(getApplicationContext());
public void clearDB() {
Realm.deleteRealmFile(instance);
}
【问题讨论】:
更新
使用 realm.delete(Foo.class) 代替 clear() 已弃用。从 0.91.0
所有@Deprecated 方法都将被删除。
来自Realm的Christian。 只要您关闭了所有打开的 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)
【讨论】:
使用 realm.delete(Myclass.class);
realm = Realm.getDefaultInstance();
realm.beginTransaction();
realm.delete(SuggestedAppDto.class);
realm.delete(WifiSpotsDto.class);
realm.commitTransaction();
realm.close();
这对我有用。
【讨论】:
如果要清空所有表,可以考虑使用realm.deleteAll()方法:
Realm realm = Realm.getDefaultInstance();
realm.beginTransaction();
realm.deleteAll();
realm.commitTransaction();
realm.close();
【讨论】:
删除所有表:
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);
}
});
}
【讨论】:
如果您想清除所有表而不担心忘记清除将来可能创建的新表,只需执行此操作
// 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();
【讨论】: