【问题标题】:Retrieve HashMap after restart of device重启设备后获取HashMap
【发布时间】:2012-09-11 19:05:56
【问题描述】:

我有一个带有 Integer+Object 对的 HashMap,但是一旦设备关闭再打开,列表就消失了,我需要能够在之后检索数据,否则我的 HashMap 毫无意义。我已经尝试过 Bundles,使用 HashMap 和我放入的对象扩展 Serializable。有谁知道如何做到这一点?我在想最好的方法是 ObjectOutputStream 但我就是不知道该怎么做。谁能指导我看这个教程/示例,或者可以给我一个快速的?

非常感谢

【问题讨论】:

    标签: java android hashmap


    【解决方案1】:

    一旦设备关机再开机,列表就消失了

    当您退出或重新启动应用程序时,列表也消失了。为此创建一个数据库。

    See here

    【讨论】:

      【解决方案2】:

      Java 对象——即使是那些可以序列化的对象——只有在你的进程还活着的时候才有效,除非你采取措施来真正序列化它们并持久地存储你的数据。为此有几个选项,包括 SQLite 数据库或 SharedPreferences。 Read this guide.

      【讨论】:

        【解决方案3】:

        您可以使用以下代码将数据保存到SharedPreferances

            Map<Integer, Object> aMap = new HashMap<Integer, Object>();
            aMap.put(String.valueOf(1), object1);
            aMap.put(String.valueOf(2), object2);
            aMap.put(String.valueOf(3), object3);
        
            SharedPreferences keyValues = getSharedPreferences("Your_Shared_Prefs", Context.MODE_PRIVATE);
            SharedPreferences.Editor keyValuesEditor = keyValues.edit();
        
            for (Integer s : aMap.keySet()) {
                keyValuesEditor.putString(String.valueOf(s), toString(aMap.get(s)));
            }
            keyValuesEditor.commit();
        

        toString() 方法取自那里:How to serialize an object into a string

        然后像这样重新打开应用程序调用smth:

            SharedPreferences keyValues = getSharedPreferences("Your_Shared_Prefs", Context.MODE_PRIVATE);
            Map<Integer, Object> map = new HashMap<Integer, Object>();
            for (String key : keyValues.getAll().keySet()) {
                map.put(Integer.valueOf(key), fromString(keyValues.getString(key, null)));
            }
        

        【讨论】:

          【解决方案4】:

          要将数据存储到手机中,内容提供商是您的最佳选择。它们不是最容易开始的。但是在 android 中提供了一个示例 Notes 应用程序,它实现了一个简单的内容提供程序。

          退房 http://developer.android.com/guide/topics/providers/content-providers.html

          但更重要的是 http://developer.android.com/guide/topics/providers/content-provider-creating.html 其中包含有关记事本示例应用程序的详细信息

          或查看此问题 How to store hashmap so that it can be retained it value after a device reboot?

          【讨论】:

            【解决方案5】:

            正如萨米尔·曼格罗利亚所说。重启手机后,Hashmap 中的所有数据都消失了。考虑使用SQLite 来保存数据。我会将Integer 作为Primary Key 保存到数据库中的每一列。

            【讨论】:

              猜你喜欢
              • 2014-11-30
              • 2021-04-06
              • 1970-01-01
              • 1970-01-01
              • 2017-06-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多