我有一个带有 Integer+Object 对的 HashMap,但是一旦设备关闭再打开,列表就消失了,我需要能够在之后检索数据,否则我的 HashMap 毫无意义。我试过 Bundles,用 HashMap 和我放入的对象扩展 Serializable。有谁知道如何做到这一点?我在想最好的方法是 ObjectOutputStream 但我就是不知道该怎么做。任何人都可以指导我看这个教程/示例,或者可以给我一个快速的吗?
非常感激
Java 对象——即使是那些可以被序列化的对象——只有在你的进程还活着的时候才是活着的,除非你采取措施来实际序列化它们并持久地存储你的数据。为此有几个选项,包括 SQLite 数据库或 SharedPreferences。阅读本指南。
您可以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()
获取方法:如何将对象序列化为字符串
然后像这样重新打开应用程序调用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)));
}
要将数据存储到手机中,内容提供商是您的最佳选择。它们不是最容易开始的。但是在 android 中提供了一个示例 Notes 应用程序,它实现了一个简单的内容提供程序。
查看 http://developer.android.com/guide/topics/providers/content-providers.html
但更重要的是这个 http://developer.android.com/guide/topics/providers/content-provider-creating.html 有关于记事本示例应用程序的详细信息
或请参阅此问题 如何存储 hashmap 以便在设备重启后保留它的值?
正如萨米尔·曼格罗利亚所说。Hashmap
当您重新启动手机时,您的所有数据都消失了。考虑使用SQLite来保存数据。我会将其保存Integer
为Primary Key
数据库中的每一列。