应用程序关闭前关闭文件

时间:2015-08-04 13:23:10

标签: android file

我的应用程序中有一个选项可以将运行时的数据保存到文件中。 它通过选中isChecked值:

来处理复选框
if (cb_saveToFile.isChecked())
   saveTofile();
else
   closeTheFile();

因为有时用户忘记取消选中复选框(并且文件未关闭,因此数据未保存)我想在应用程序关闭时自动关闭文件(用户通过任务关闭)经理)

我试图覆盖onDestroy方法,但这没有帮助:

@Override
protected void onDestroy()
{
    if (mFile.saveToFile)
        closeTheFile();
}

所以问题是:当应用程序关闭时如何关闭文件?

修改 我正在创建一个文件:

public void createFile() throws IOException {
    mFile = new File(fullFileName);
    mFile.createNewFile();
    fOut = new FileOutputStream(mFile);
    myOutWriter = new OutputStreamWriter(fOut);
}

使用以下方法追加行:

public void addToFile (String data, Boolean enter) throws IOException {
    myOutWriter.append(data);
    if (enter) myOutWriter.append("\n");
}

我想在应用程序关闭时关闭文件(myOutWriter.close()& fOut.close())(而不仅仅是当用户点击复选框以停止保存时)

1 个答案:

答案 0 :(得分:2)

我理解你的方法在其他动作发生时效果很好,所以问题出在你调用这种方法的android lifecycle部分。

您想要做什么,必须放在Stopping and Restarting your app lifecicle part

您必须使用相同的方法覆盖onPause()onDestroy()仅在应用程序被杀时才会显示:

<强> onPause()

  

活动进入后台但尚未(尚未)被杀死时,被称为活动生命周期的一部分。 onResume()的对应部分。

<强> onDestroy()

  

在活动被销毁之前执行任何最终清理。这可能发生因为活动正在完成(有人称之为finish(),,或者因为系统暂时销毁活动的此实例以节省空间。您可以使用isFinishing()方法区分这两种情况。

@Override
protected void onPause()
{
    if (mFile.saveToFile)
        closeTheFile();
}