Вот простой тестовый код, который я написал для тестирования функции compactRealm.Realm Android: compactRealm не работает должным образом
private void compactRealmTest(int count){
Realm realm = Realm.getDefaultInstance();
for(int i=0;i<count;++i) {
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
Person p = Person.getRandomPerson();
realm.copyToRealm(p);
}
});
final RealmResults<Person> personList = realm.where(Person.class).findAll();
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
int size = personList.size();
for(int i=0;i<size;++i){
personList.deleteFirstFromRealm();
}
}
});
}
realm.close();
}
Эта функция вставляет объект и немедленно удаляет этот объект из Realm. После окончания этой функции область db не будет содержать никаких объектов. Я заметил, что, хотя после выполнения этой функции не было объектов, размер файла области стал ~ 4,5 МБ (после вызова compactRealmTest(1000)
). Я решил сжать царство, вызвав функцию compactRealm()
. Размер файла был уменьшен с ~ 4.5MB до 3.5MB. Почему в Realm по-прежнему используется 3.5MB, хотя в области нет объектов?
вы получили никакого ответа или ссылку по этому вопросу? –
Попробуйте мое решение: http://stackoverflow.com/questions/34217476/android-realm-large-file-size/42959238#42959238 –