我的应用程序使用序列化来存储数据。 Save()函数在Activity的onStop()方法中被调用。由于数据很小,一切都很好。今天的序列化需要一段时间,我很惊讶找到一种方法来破坏数据。如何禁止在写入文件时终止应用程序
如果我通过主页按钮退出应用程序,然后快速手动杀死应用程序窗体背景活动屏幕(长按Home按钮),我的数据似乎丢失了。我认为它是因为应用程序被写入文件并被中断。
有没有机会禁止杀死进程,直到我的save()方法起作用?我正在考虑自己重写序列化,并且时间可能会更快,但据我了解,有时候这个问题会再次发生。
谢谢。
//活动代码:
@Override
protected void onStop(){
try {
ms.save();
} catch (IOException e) {
e.printStackTrace();
}
super.onStop();
}
// Singleton save fucntion
public void save() throws IOException {
Runnable r = new Runnable()
{
@Override
public void run()
{
try {
FileOutputStream fos;
ObjectOutputStream os;
if (data != null){
fos = context.openFileOutput("Data.dat", Context.MODE_PRIVATE);
os = new ObjectOutputStream(fos);
os.writeObject(data);
os.flush();
os.close();
fos.close();
}
}catch (Exception e){
e.printStackTrace();
}
}
};
Thread t = new Thread(r);
t.start();
}
我想创建一个后台服务来获得这项任务完成。 – RyanB
您是否在使用IntentService?好吧,我会检查它。谢谢。 – Kruiller
我检查了这一点。 IntentService在应用程序查杀时死亡。 =( – Kruiller