Android:应用关闭并重新启动后访问数据

时间:2014-01-14 22:41:58

标签: android

我想在我的应用首次启动时创建一个hashmap,并且能够在从任务管理器关闭应用程序后访问该hashmap中写入的数据。我该怎么做呢?

1 个答案:

答案 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;
    }
}