【问题标题】:Persistance of ApplicationInfo objectsApplicationInfo 对象的持久性
【发布时间】:2011-12-25 11:09:16
【问题描述】:

我正在构建一个 Android 应用程序,它会获取设备上安装的所有应用程序的列表(ApplicatioInfo 对象)。不幸的是,这个过程太慢了(200 个应用程序大约需要 10 秒)。

有没有办法在我的应用程序的使用中持久/缓存我的 List

谢谢

【问题讨论】:

    标签: android caching persistence


    【解决方案1】:

    您可以将其保存在应用的 SharedPreferences 中一段时间​​:

    ArrayList<ApplicationInfo> ai = new ArrayList<ApplicationInfo>();
    
    //Add the apps to the ArrayList
    
    JSONArray ja = new JSONArray(ai);
    
    settings = getSharedPreferences("apps", 0);
    settings.edit()
    .putString("appList", ja.toString())
    .putLong("time", System.currentTimeMillis())
    .commit();
    

    然后只需使用 Timer 或 onResume 方法检查最后创建的列表是否太旧。

    【讨论】:

    • 从共享首选项中检索缓存 JSON 字符串后,如何将其转回 ApplicationInfo 的 ArrayList?
    • 也许你可以迭代 JSONArray 以在 ArrayList 中添加元素
    • 嘿,当我尝试将结果从 ja.get(index) 转换为 ApplicationInfo 时,我遇到了 ClassCastException。知道为什么吗?
    • 我采用了不同的方法并创建了一个新类 AppDescriptor,它只包含我需要的关于每个 ApplicationInfo 对象的信息。我现在使用序列化来缓存 AppDescriptor 对象。
    猜你喜欢
    • 2021-04-05
    • 2013-06-04
    • 2010-12-26
    • 2021-11-07
    • 1970-01-01
    • 2011-01-23
    • 1970-01-01
    • 2011-05-25
    • 2013-02-19
    相关资源
    最近更新 更多