【发布时间】:2017-12-18 16:25:29
【问题描述】:
我有一个在我的应用程序中使用的领域数据库。 文件大小为 7mb。它里面有不同的物体。 但后来我调用了这个函数:
public static void deleteRealm(Context context) {
Realm realm = PSApplicationClass.getInstance().getRealm();
try {
Log.i("", "realm start");
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
realm.delete(Destination.class);
realm.delete(TripStep.class);
realm.delete(TripStop.class);
realm.delete(Route.class);
realm.delete(RealmLocation.class);
realm.delete(CoordLocation.class);
realm.delete(PSTrip.class);
realm.delete(PSUser.class);
realm.delete(UserVehicle.class);
realm.delete(Vehicle.class);
realm.delete(MileageRates.class);
realm.delete(PSUserActivityMonth.class);
realm.delete(PSUserActivityWeek.class);
realm.delete(PSUserActivityYear.class);
realm.delete(Activity.class);
realm.delete(PSTripsStats.class);
realm.delete(Report.class);
realm.delete(Setting.class);
realm.delete(AddressComponent.class);
realm.delete(RealmString.class);
realm.delete(RealmInt.class);
realm.deleteAll();
}
});
Log.i("", "realm end");
} catch (Exception e) {
Log.i("", "realm continue initTrip error trying to add to realm:" + e.getMessage());
if (realm.isInTransaction()) {
realm.cancelTransaction();
}
}
}
然后我再次检查。该文件仍有 7 MB,但它是空的。里面没有领域对象。 更何况,如果我再次得到相同的数据,它会增长到 14MB,所以当我删除数据时,它会有 14MB 为空,然后增长到 21... 等等。这导致它成为一个巨大的文件。我很确定这不应该发生。为什么领域会这样做? 这是我正在谈论的文件: https://www.dropbox.com/s/ri95yiwjutjiki6/myrealm.realm?dl=0
【问题讨论】:
-
一般是后台线程未关闭Realm实例造成的。您是否在后台线程上打开了任何 Realm 实例,并且在线程终止时它没有关闭?看看realm.io/docs/java/latest/#faq-large-realm-file-size
标签: android database realm storage realm-mobile-platform