Android - 将数据保存到内部存储

时间:2016-05-18 07:22:10

标签: java android android-activity internal-storage

我正在开发一个简单的待办事项列表应用程序,我正在尝试从/向内部存储读取/写入数据。我试图了解何时应该调用那些读/写方法。

我知道活动类有一个onCreate()方法,这对我的read方法来说是一个合理的位置,但是我应该在哪里调用我的write方法?

我想在应用关闭/结束时调用它,因此我假设onDestory()是一个不错的位置,但我听说onDestroy()可能不是数据存储的好位置操作,我应该使用onStop()

任何帮助或想法?

3 个答案:

答案 0 :(得分:1)

根据Activity Lifecycle上的Android开发者指南中的表格,您的应用可能会在onPause()(对于Pre-HONEYCOMB设备)之后或{{1}之后随时被系统杀死而不会发出警告}}。因此,您可能希望在这些方法中编写数据,以确保不会丢失任何内容。因此,对于较新的设备(API级别11及以上),onStop()应该没问题。如果您的应用也应该在较旧的设备上运行,那么onStop()将是最佳选择。

答案 1 :(得分:1)

这取决于应用程序生命周期。

This Picture

请参阅This

当用户按下主页按钮(硬键)时,

onStop()会调用。

然后,如果内存不足或其他原因,Android内存管理器会立即终止您的应用,onDestory()永远不会调用。

你必须做的最好的事情是制作一个按钮来保存数据。当然,包括onStop()保存例程。

答案 2 :(得分:-1)

这只是示例代码。但是你明白了。创建一个实现下面代码的自定义方法,并在“onClick”或其他任何事件上调用它。

File file;
    FileOutputStream strem = null;
    String line = "Hey this is my name";
    try {
        file = new File("sdcard/newFile.txt");
        strem = new FileOutputStream(file);
        byte[] bytes = line.getBytes();
        strem.write(bytes);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            strem.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }