重新开始之后我有整型+对象对一个HashMap,但一旦设备被关闭并上,列表不见了,我需要能够检索后的数据,否则我的HashMap是毫无意义。我试过了Bundles,用HashMap和我要加入的对象来扩展Serializable。有没有人知道如何做到这一点?我在想最好的方法是ObjectOutputStream,但我不知道如何去做。任何人都可以直接给我一个教程/例子,或者可以给我一个快速的吗?检索HashMap的设备
大加赞赏
重新开始之后我有整型+对象对一个HashMap,但一旦设备被关闭并上,列表不见了,我需要能够检索后的数据,否则我的HashMap是毫无意义。我试过了Bundles,用HashMap和我要加入的对象来扩展Serializable。有没有人知道如何做到这一点?我在想最好的方法是ObjectOutputStream,但我不知道如何去做。任何人都可以直接给我一个教程/例子,或者可以给我一个快速的吗?检索HashMap的设备
大加赞赏
用于存储数据到手机内容提供商是最好的选择。他们并不是最容易开始的。但是有一个在android中提供的示例Notes应用程序,它实现了一个简单的内容提供者。
退房 http://developer.android.com/guide/topics/providers/content-providers.html
但更重要的是这对记事本示例应用程序
或者查看此问题 How to store hashmap so that it can be retained it value after a device reboot?
Java对象细节此 http://developer.android.com/guide/topics/providers/content-provider-creating.html - 即使是那些可序列化 - 只要您的流程处于活动状态,就会一直存在,除非您采取措施实际序列化并永久存储您的数据。有几种选择,包括SQLite数据库或SharedPreferences。 Read this guide。
正如Samir Mangroliya所说。当您重新启动手机时,Hashmap
中的所有数据都消失了。考虑使用SQLite来保存数据。我会将Integer
作为Primary Key
保存到数据库中的每一列。
您可以使用此代码将数据保存到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然后重新打开应用程序调用水木清华这样的后
:
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)));
}
你有没有尝试过偏好? – Yahor10