如何在android中保存自定义对象列表(包含drawable)?

时间:2016-08-14 19:40:33

标签: android mysql json list save

我开发了一个侧边栏应用程序,我现在使用的方法是获取所有应用程序并让用户选择他喜欢的应用程序。现在我将这些所选应用程序的packageNames保存为在sharedPreferences中设置,每次触发侧边栏时,都会检索所有已安装应用程序的列表,然后通过检查已保存集合中的packageNames,我会列出所选应用程序并显示它们。它还具有自定义图标包集成,因此我创建了自定义对象,用于存储每个应用程序的ResolveInfo,标签和图标,并将这些对象的列表传递给适配器。

现在我也想实现快捷功能。因此,我考虑使用的方法是直接保存自定义对象列表并检索它们,而不必每次都从所有应用程序列表中获取列表的麻烦,如果它是一个自定义快捷方式,我将不得不将它保存在某处并直接检索,因为它无法从我之前的方法中检索到。

自定义对象如下所示:

public class MyAppInfo {

    public ResolveInfo info;

    public String label;

    public Drawable icon;

    public MyAppInfo() {
    }

    public MyAppInfo(ResolveInfo info, String label, Drawable icon) {
        this.info = info;
        this.label = label;
        this.icon = icon;
    }
}

我已经研究了保存自定义对象列表的方法,并且我发现我可以通过使用JSON,平面文件和MySQL数据库来实现这一点。

我尝试过JSON数组。但它只是在保存列表时遇到困难,后来显示内存不足,其他时候,应用程序崩溃了。我甚至试图将它保存为文件,但它似乎并不适合我,因为当我尝试检索它时数据总是为空。我还没有尝试过SQL方法,因为我不知道如何在SQL中保存Drawable。

有人可以帮我这个吗?在我的案例中保存数据的最佳方法是什么?

提前致谢!!

1 个答案:

答案 0 :(得分:0)

我猜测它是你引用的其他应用程序图标,以及可绘制的内容。

如果是这样,你肯定不会使用JSON数组或平面文件。您应该使用数据库。只是仅供参考,MySQL在Android上不可用,我们使用SQLite。

您应该将数据库中的所有常规数据保存为字符串,整数,布局等,然后将可绘制数据保存为BLOBS(基本上是原始图像数据)。

有很多指南/ stackoverflow帖子可以帮助实现实际的数据库,并将drawables存储为BLOBS。