Вопрос

Я разрабатываю приложение, которое периодически отправляет информацию на внешний сервер. Я делаю локальную копию отправляемых данных для целей резервного копирования.

Как лучше всего хранить данные с точки зрения экономии заряда батареи ? Каждая отправка данных представляет собой сериализованный объект (класс имеет 5 полей, включая дату, числа и строки) размером около 5–10 тыс.

Есть еще идеи?

Это было полезно?

Решение

Я не имею понятия о сроке службы батареи напрямую, но одним из критериев будет то, что проще в управлении? Меньшее количество операций по управлению данными будет означать меньшее количество циклов ЦП и, в свою очередь, более длительное время автономной работы.

Я бы сказал, что вариант SQLite проще. Вы можете поместить столбец даты в таблицу SQLite, в которой хранятся ваши данные, что упрощает удаление старых представлений, которые вам больше не нужны - и все это обрабатывается с помощью собственной библиотеки SQL. Управление всей загрузкой файла - или, что еще хуже, одним файлом - с вашим собственным кодом Java было бы намного более трудоемким.

Кроме того, вы можете записать данные в базу данных и просто забыть об этом, пока вам не понадобится их снова прочитать. Если вы храните данные в файлах, вам нужно разобраться, когда вам следует читать и писать файлы в терминах Жизненный цикл приложения Android . Если вы беспокоитесь о батарее, вам, вероятно, не захочется писать файлы чаще, чем нужно, и кэшировать данные в памяти, но вам нужно убедиться, что вы не потеряли данные, когда ваше приложение приостановлено или уничтожено , На мой взгляд, гораздо проще использовать базу данных SQLite и не беспокоиться об этом.

Другие советы

Я не думаю, что имеет значение, используете ли вы SQLite или файл, потому что база данных SQLite - это просто файл в системе (хранится в /data/data/<your_package>/databases/). Вам нужно будет зафиксировать базу данных в нужное время, точно так же, как вам нужно, чтобы сохранить файл на жесткий диск в нужное время. Другими словами, так или иначе вы можете использовать столько же записей на жесткий диск.

Я думаю, что то, что вы выбираете, больше зависит от того, какие данные вы сохраняете. Если вам нужны полномочия, которыми может обладать БД (например, запросы), тогда обязательно используйте SQLite. Однако, если вам не нужна база данных или у вас есть данные, которые сильно различаются (и их нелегко настроить в реляционной базе данных), я бы пошел с файлами.

Я могу с уверенностью сказать, что вам не следует не использовать сериализацию для сохранения файла, если вы выбрали именно этот путь. Android сериализация медленная, медленная, медленная и создает большие файлы. По причинам производительности гораздо лучше написать собственный формат XML или JSON.

Является ли ваше приложение многопоточным? Если у вас есть несколько потоков, обращающихся к хранилищу данных, я бы пошел с SQLite. Пусть SQLite беспокоится о проблемах с блокировкой.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top