Сохранение данных для виджета - PullRequest
3 голосов
/ 12 февраля 2020

Я создал виджет RSS, который извлекает данные в onUpdate и сохраняет их в ArrayList объектов статьи. Каждый класс Object выглядит следующим образом:

public class Story {
    private String title;
    private String link;
    private Date pubDate;
    private String imgUrl;
    private Bitmap img;
    private String content;
}

Он содержит данные, а также изображение в растровом формате (очень маленькие изображения). Виджет работает примерно так: при нажатии правой и левой кнопок на виджете он циклически переключается между историями из ArrayList. Я вижу, что данные хранятся в ArrayList около 12-24 часов, а затем виджет больше не работает.

  1. Каков наилучший способ хранения данных для виджета, подобного этому?
  2. Какова продолжительность жизни глобальных переменных в виджете?

1 Ответ

1 голос
/ 19 февраля 2020

Когда вы извлекаете данные (которые включают в себя необходимый вам растровый файл), кодируйте свой растровый рисунок в строку, а затем помещаете строку в SharedPreferences.

Вы хотите изменить загрузку изображения подход, при котором вы сначала получаете String из SharedPreferences, декодируете в Bitmap (если он не нулевой или пустой), затем помещаете его в свой ImageView.

Это полезный источник для кодирования / декодирования растрового изображения в строку (и наоборот):

Сколько способов преобразовать растровое изображение в строку и наоборот?

Примечание: Это довольно эффективно в условиях, когда размер растрового изображения действительно мал. В противном случае вам нужно использовать что-то вроде Glide или Picasso , чтобы помочь вам с кэшированием растровых изображений.

...