【问题标题】:How to save a list of Custom Objects (contains drawable) in android?如何在android中保存自定义对象列表(包含可绘制对象)?
【发布时间】:2016-08-14 19:40:32
【问题描述】:

我开发了一个侧边栏应用程序,我现在使用的方法是获取所有应用程序并让用户选择他最喜欢的应用程序。现在,我将这些选定应用程序的 packageNames 保存为 SharedPreferences 中的 Set,每次触发侧边栏时,都会检索所有已安装应用程序的列表,然后通过检查保存的集合中的 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。

有人可以帮我解决这个问题吗?在我的情况下,保存数据的最佳方法是什么?

提前致谢!!

【问题讨论】:

    标签: android mysql json list save


    【解决方案1】:

    我猜你指的是其他应用程序图标,带有可绘制对象。

    如果是这样,您绝对不应该使用 JSON 数组或平面文件。您应该使用数据库。仅供参考,Android 上不支持 MySQL,我们使用 SQLite。

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

    有很多指南/stackoverflow 帖子可以帮助实现实际数据库以及将可绘制对象存储为 BLOBS。

    【讨论】:

    • 感谢您的快速回复!很抱歉,我从来没有使用过 SQL,所以我真的不知道这就是我认为它是 MySQL 的原因。不管怎样,我会试试你的方法。并且使用了可绘制对象,因为我在应用程序中使用图标包,并且用户可以在每个应用程序的基础上存储图标。我会在 stackoverflow 中四处寻找好的指南,但如果您知道任何指南,链接会很有帮助。谢谢:)
    • 非常感谢! SQLite 很棒。性能明显比以前好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    • 2019-01-04
    • 1970-01-01
    • 2012-01-18
    相关资源
    最近更新 更多