Я исследовал & все пробовал, так что не тратьте впустую свое время. Есть 2 возможных решения:
1) Realm.compact (RealmConfiguration): Вы должны закрыть все подключения к базе данных Realm, которые были открыты, от деятельности, или где бы вы его создали. Затем вы должны вызвать Realm.compact (yourDb.getConfiguration()). Если каждое соединение закрыто перед этой компактной операцией, результат будет правдой, а база данных будет меньше, иначе она не изменит ее размер, а результат будет ложным.
2) мой вид compactDb: Второе решение основано на том, чтобы сделать какой-то «механизм обмена», который, возможно, будет иметь более низкую производительность (в некоторых больших файлах, считающихся в milisecond), но определенно решит проблему больших файлы и оставить в своей базе только необходимый размер области.
Я создал свою личную функцию «compactDb()», который будет: 1. взять мой дб (Царство), 2. скопировать его в какой-то новый файл с именем по умолчанию-compact.realm 3. удалить мой дб (царства) 4. копия-обратно по умолчанию файла-compact.realm к моим дб (новый файл с расширением области) 5. удаления по умолчанию-compact.realm, так как нам не нужны их больше
этой «копия вещь» будет удалить старые версии базы данных и скопировать только последний (реальный размер вашей базы данных). Так как следующий шаг, чтобы удалить текущую БД, то вы избавитесь от этих файлов ... :)
Вот мой код:
public void compactDb(String dbName){
try{
//move compacted db to new one...
Realm db = Realm.getInstance(getConfig(dbName));
File compactedFile = new File(db.getConfiguration().getRealmDirectory(), "default-compacted.realm");
compactedFile.delete();
db.writeCopyTo(compactedFile);
db.close();
Realm compactedDb = Realm.getInstance(getConfig("default-compacted.realm"));
File dbFile = new File(compactedDb.getConfiguration().getRealmDirectory(), dbName);
dbFile.delete();
compactedDb.writeCopyTo(dbFile);
compactedDb.close();
compactedFile.delete();
}catch (Exception e){
e.printStackTrace();
}
}
вспомогательная функция, которая даст мне нужную конфигурацию, которую я использую с помощью кода:
private RealmConfiguration getConfig(String name) {
return new RealmConfiguration.Builder()
.name(name)
.schemaVersion(0)
.build();
}
Использование этой функции:
compactDb("default.realm");
и ваш Realm Дат abase будет изменено до реального размера ... Имейте счастливое кодирование :)
Вы должны проверить, что находится внутри Realm DB, вы вставив несколько раз и т.д .. Нормально Realm с пустой БД увеличивает размер около 800 КБ. Чтобы просмотреть таблицы Realm, проверьте http://stackoverflow.com/a/34187414/3736955 –
Спасибо человеку! Я обязательно займусь этим. – Petersicecream