我想在我的应用首次启动时创建一个hashmap,并且能够在从任务管理器关闭应用程序后访问该hashmap中写入的数据。我该怎么做呢?
答案 0 :(得分:1)
您有很多选择:
“共享偏好设置
将私有原始数据存储在键值对中。
内部存储
将私有数据存储在设备内存中。
外部存储
将公共数据存储在共享外部存储上。
SQLite数据库
将结构化数据存储在私有数据库中。
网络连接
使用您自己的网络服务器将数据存储在Web上。“
因为它是一个Map,所以将它写入文本文件是最容易的,然后使用某种键系统“重新编译”它,可能是JSON或xml。
在此处阅读更多内容:http://developer.android.com/guide/topics/data/data-storage.html
为地图编辑文件保护程序。您必须根据需要进行编辑。
final public class FileHandler {
final private File folderCreatedDir;
final private String folderToCreate;
final private Map<String, String> mapNameToContents;
public FileHandler(File baseDirectory, String folderToCreate,
Map<String, String> mapNameToContents) {
this.folderCreatedDir = new File(baseDirectory + File.separator
+ folderToCreate);
this.folderToCreate = folderToCreate;
this.mapNameToContents = mapNameToContents;
}
private final void createFolder() {
folderCreatedDir.mkdir();
}
private final void writeMapContents() throws IOException {
Set<String> keySet = mapNameToContents.keySet();
for (String key : keySet) {
writeContents(key, mapNameToContents.get(key));
}
}
private final void writeContents(String key, String contents)
throws IOException {
File file = new File(folderCreatedDir + File.separator + key);
FileOutputStream fileOutput = new FileOutputStream(file);
if (file.canWrite()) {
fileOutput.write(contents.getBytes());
fileOutput.close();
}
}
public void writeAllContents() throws IOException {
createFolder();
writeMapContents();
}
public StringBuilder getContents(String key) throws IOException {
BufferedReader rd = new BufferedReader(new FileReader(folderCreatedDir
+ File.separator + key));
String line = "";
StringBuilder htmlBuilder = new StringBuilder();
long bytesRead = 0;
while ((line = rd.readLine()) != null) {
htmlBuilder.append(line);
bytesRead = bytesRead + line.getBytes().length + 2;
}
return htmlBuilder;
}
}