我的应用程序中有一个选项可以将运行时的数据保存到文件中。
它通过选中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()
)(而不仅仅是当用户点击复选框以停止保存时)
答案 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();
}