Android 关闭应用程序之前关闭文件
我的应用程序中有一个选项,可以在运行时将数据保存到文件中。 它通过选中Android 关闭应用程序之前关闭文件,android,file,Android,File,我的应用程序中有一个选项,可以在运行时将数据保存到文件中。 它通过选中isChecked值来使用复选框: if (cb_saveToFile.isChecked()) saveTofile(); else closeTheFile(); 因为有时用户忘记取消选中复选框(文件未关闭,因此数据未保存),所以我希望在应用程序关闭时自动关闭文件(仅由用户通过任务管理器关闭) 我试图重写onDestroy方法,但没有帮助: @Override protected void onDestroy
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()
),而不仅仅是当用户单击复选框停止保存时)我知道当其他操作发生时,您的方法工作得很好,所以问题在于调用此方法的部分
你想做的事,必须放在你的位置上
您必须使用相同的方法重写,仅当应用程序将被终止时:
onPause()
当活动进入后台,但尚未(尚未)终止时,作为活动生命周期的一部分调用。onResume()的对应项
onDestroy()
在销毁活动之前执行任何最终清理。这可能是因为活动正在完成(有人对其调用finish(),或者是因为系统正在临时销毁活动的此实例以节省空间。您可以使用isFinishing()方法区分这两种情况
对于打开的文件,您的确切意思是什么?文件对象不保持打开或关闭状态。您的意思是有一个打开的OutputStream或指向文件的InputStream?您是否也尝试过使用方法closeTheFile()在onStop或onPause中?除非您有大量数据要连续写入文件,否则我建议您在不需要的任何时候关闭文件it@njzk2我不想关闭该文件,因为我正在继续保存后台,而应用程序正在最小化。添加
myOutWriter.flush()
在您的addToFile功能中感谢您的回答,但我不能使用OnPause
,因为它在应用程序最小化时也能工作,而不仅仅是在任务管理器关闭时。(因此,当用户返回应用程序时,或者如果用户希望在应用程序处于后台时保留数据,我会遇到问题)
@Override
protected void onPause()
{
if (mFile.saveToFile)
closeTheFile();
}