首页 > 解决方案 > 为小部件保存数据

问题描述

我创建了 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. 小部件中全局变量的预期寿命是多少?

标签: androidandroid-widget

解决方案


当您检索数据(包括您需要的位图)时,将您的位图编码为字符串,然后将字符串放入 SharedPreferences 中。

您将需要更改图像加载方法,首先从 SharedPreferences 获取字符串,将其解码为位图(如果它不为 null 或为空),然后将其放入 ImageView 中。

这是将位图编码/解码为字符串的有用来源(反之亦然):

有多少种方法可以将位图转换为字符串,反之亦然?

注意:这在 Bitmap 的尺寸非常小的情况下非常有效。否则,您需要使用GlidePicasso 之类的工具来帮助您进行位图缓存。


推荐阅读