保存小部件的数据
Saving data for widget
我创建了 RSS 小部件,它在 onUpdate 上获取数据并将其保存在文章对象的 ArrayList 中。每个对象 class 看起来像这样:
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 小时,然后小部件就不再工作了。
- 为这样的小部件存储数据的最佳方式是什么?
- 小部件中全局变量的预期寿命是多少?
当您检索数据(包括您需要的位图)时,将您的位图编码为字符串,然后将字符串放入 SharedPreferences。
您需要更改图像加载方法,首先从 SharedPreferences 获取字符串,将其解码 为位图(如果它不为 null 或空),然后把它放在你的 ImageView 里。
这是 encode/decode 位图到字符串(反之亦然)的有用来源:
How many ways to convert bitmap to string and vice-versa?
注意:这在Bitmap尺寸非常小的情况下非常有效。否则,您需要使用 Glide or Picasso 之类的东西来帮助您进行位图缓存。
我创建了 RSS 小部件,它在 onUpdate 上获取数据并将其保存在文章对象的 ArrayList 中。每个对象 class 看起来像这样:
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 小时,然后小部件就不再工作了。
- 为这样的小部件存储数据的最佳方式是什么?
- 小部件中全局变量的预期寿命是多少?
当您检索数据(包括您需要的位图)时,将您的位图编码为字符串,然后将字符串放入 SharedPreferences。
您需要更改图像加载方法,首先从 SharedPreferences 获取字符串,将其解码 为位图(如果它不为 null 或空),然后把它放在你的 ImageView 里。
这是 encode/decode 位图到字符串(反之亦然)的有用来源:
How many ways to convert bitmap to string and vice-versa?
注意:这在Bitmap尺寸非常小的情况下非常有效。否则,您需要使用 Glide or Picasso 之类的东西来帮助您进行位图缓存。