应用程序大小由于领域android增加

时间:2016-05-26 06:41:19

标签: android realm

我通过服务每隔15秒将一些数据添加到领域数据库中。

经过一整夜,应用程序的大小由于领域而变为350mb,确认..

但是,如果我从领域删除该数据,在某些条件之后,数据被删除但是app的大小仍然显示为350mb。

问题是为什么应用程序大小现在没有缩小。

3 个答案:

答案 0 :(得分:2)

Realm目前不会自动回收数据库使用的空间,但如果您以后再次添加数据,它将被重用。

如果您想释放磁盘空间,可以使用51%10https://realm.io/docs/java/latest/api/io/realm/Realm.html#compactRealm-io.realm.RealmConfiguration-

然而,350 MB的文件大小听起来相当多。你真的插入那么多数据吗?

答案 1 :(得分:0)

    Realm realm = null;
    RealmConfiguration config = new RealmConfiguration.Builder(MyApplication.appInstance().getApplicationContext())
            .deleteRealmIfMigrationNeeded()
            .build();
    try {
        realm = Realm.getInstance(config);
    } catch (Exception e) {
    }

    RealmResults<MqttLocationModel> result2 = realm.where(MqttLocationModel.class).equalTo("uid", objectId).findAll();
    Log.e("Delted  object id",""+objectId);
    Log.e("Delted DB Size",""+result2.size());
    realm.beginTransaction();
    result2.clear();
    realm.commitTransaction();

    RealmResults<MqttLocationModel> result3 = realm.where(MqttLocationModel.class).equalTo("uid", objectId).findAll();
    Log.e("Delted final DB Size",""+result3.size());

    realm.close();

    realm.compactRealm(config);

答案 2 :(得分:0)

您的服务在后台线程上执行,因此您可能在同步过程的整个持续时间内在BACKGROUND THREAD上打开一个域,从而创建Realm的多个版本。

如果是这样,您应该在事务后关闭并重新打开Realm,或者使用waitForChange ()