Как уменьшить размер базы данных SQLite?
Проблема: Уменьшение размера базы данных SQLite
Я сохранил все свои данные в базе данных SQLite, и сейчас ее размер составляет 14 МБ. Меня беспокоит, что пользователи с медленным подключением к интернету могут столкнуться с трудностями при загрузке моего приложения из-за такого размера базы данных.
Существует ли способ уменьшить размер базы данных SQLite, чтобы сделать ее более доступной для пользователей с низкой пропускной способностью?
4 ответ(ов)
14 МБ — это довольно большой размер для Android-приложения, поэтому будет лучше, если вы организуете его загрузку с сервера и интеграцию в приложение.
Вместо этого можно упаковать приложение вместе с файлом базы данных в сжатом формате (например, .zip) и разархивировать его при первом запуске приложения (не забудьте удалить .zip файл). Лучше всего осуществлять все это на SD-карте.
Попробуйте заархивировать вашу базу данных и использовать ZipInputStream
для распаковки из ресурсов. В любом случае, Android сам заархивирует вашу базу данных в 14 МБ, когда будет создан APK (которая будет распакована во время установки). Так что, полагаю, размер вашего APK будет около 5-6 МБ.
У меня был опыт работы с SQLite, когда я импортировал около 3 МБ данных и потом обнаружил, что у данных есть проблемы с кодировкой. Я удалил таблицу, создал её заново и снова импортировал данные после исправления кодировки. В результате файл SQLite увеличился до 6 МБ. Моим решением стало удалить базу данных SQLite и создать новую. (Без дополнительных деталей о том, что вы храните в своей базе данных, это всё, что я могу предложить...)
14 МБ — это не так уж и много для приложения в наше время. Ещё один вариант, который вы можете попробовать, — это удалить ненужные индексы таблиц. Возможно, в ваших таблицах есть лишние индексы, которые занимают много места. Вам, возможно, придется изменить свои запросы.
Как вызвать метод с задержкой в Android
Как передать объект из одной активности в другую на Android
Использование контекста в фрагменте
Как проверить доступ к интернету на Android? InetAddress никогда не выдает таймаут
Room - Директория экспорта схемы не указана аннотационному процессору, не удается экспортировать схему