我有一个带有整数+对象的HashMap,但是一旦关闭并打开设备,列表就会消失,我需要能够在之后检索数据,否则我的HashMap毫无意义。我已经尝试过Bundles,使用HashMap扩展Serializable和我正在放入的对象。有没有人知道如何做到这一点?我认为最好的方法是ObjectOutputStream,但我无法弄清楚如何做到这一点。任何人都可以指导我这个教程/示例或者能给我一个快速的吗?
备受赞赏
答案 0 :(得分:4)
答案 1 :(得分:2)
Java对象 - 即使那些可以序列化的对象 - 只有在您的进程处于活动状态时才会存在,除非您采取措施实际序列化它们并持久存储数据。有几种选择,包括SQLite数据库或SharedPreferences。 Read this guide
答案 2 :(得分:1)
您可以使用以下代码将数据保存到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)));
}
答案 3 :(得分:0)
为了将数据存储到手机,内容提供商是您的最佳选择。它们并不是最容易开始的。但是在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?
答案 4 :(得分:0)
Samir Mangroliya说。重新启动手机时,Hashmap
中的所有数据都已消失。考虑使用SQLite保存数据。我会将Integer
保存为Primary Key
到数据库中的每一列。