Подход для кэширования большого количества текстовых и аудиоданных в приложении Android - PullRequest
2 голосов
/ 13 июля 2010

Мы должны кешировать текстовые и аудиоданные в нашем приложении пока устройство не будет загружено или максимум два дня, в зависимости от того, что произойдет ранее. Чтобы получить представление о данных для кэширования, обратите внимание, что мы хранить около 200 заголовков текста, содержащих около 10 полей, каждое из длина 30 байтов и около 20 звуковых файлов каждый длиной около минуты.

Мы получаем текстовые данные, анализируя XML, а затем сохраняем их в ArrayLists. Звуковые файлы пишутся прямо внутри приложения хранилище с использованием файлового ввода-вывода (а не в каталоге SDcard или кэша приложений).

Это приложение должно запускаться на устройствах под управлением Android 1.5 или более поздней версии.

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

У меня есть следующие вопросы относительно того, как мы подходим к кешированию?

  1. Стоит ли сохранять текстовые данные в приложениях базы данных SQLite? или мы должны использовать механизм сериализации Java и сохранить список объекты (которые составляют Сериализуемые компоненты) внутри приложение?
  2. Где мы должны писать текстовые данные / звуковые файлы - внутри приложение, кеш или SD карта?
  3. Можно ли все это сохранить в каталоге кэша приложений? Насколько велик каталог кеша может расти?
  4. Можем ли мы указать промежуток времени для Android Runtime, для которого кеш поддерживается? Или мы должны сделать это вручную?

Пожалуйста, помогите и посоветуйте.

Спасибо. Примечание: также задавали этот вопрос здесь .

1 Ответ

2 голосов
/ 13 июля 2010
  1. БД SQLite. Таким образом вы сэкономите память и сможете использовать CursorAdapter s.
  2. Положите их на SD, внутренняя память очень ограничена
  3. Я бы вообще не использовал каталог кеша приложений, # 2
  4. Вы должны сами сравнить метки времени изменения файла с текущей меткой времени. Я делаю это в Application onCreate().

Я использую

  • пользовательский android.intent.action.BOOT_COMPLETED приемник для инициализации каталога кеша при монтировании карты
  • вспомогательный класс для чтения / записи / очистки кэша, методы сохранения / восстановления BitmapDrawable s в виде PNG, создание хэша MD5 для кэшированного имени файла.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...