Я новичок в разработке для Android и создаю Flash Card приложение.
Я записываю объект Card в файл с помощью ObjectOutputStream
и читаю его с помощью ObjectInputStream
.
Я думал, что произойдет, когда приложение пытается записать карту вфайл, обновляя его во временной физической памяти, и пользователь закрывает приложение, когда происходит процесс записи.
Файл будет в несогласованном состоянии и приведет к неожиданным логическим ошибкам в приложении.
ObjectInputStream ois = new ObjectInputStream(openFileInput(FILE_NAME));
Card c = (Card) ois.readObject();
c.foo = foo + 1;
ois.close();
ObjectOutputStream oos = new ObjectOutputStream(openFileOutput(FILE_NAME, MODE_PRIVATE));
// At this point the file will be truncated as the file is opened in write mode
// User closes the application here at this point
// Card has been updated but not stored into the file
oos.writeObject(c);
oos.close();
Можем ли мы сделать эту группу кода атомарной, чтобы даже если пользователь закрылприложение между, все изменения будут откатаны?
Или мы можем запретить пользователю останавливать приложение на этом этапе?
Закрывая приложение, я имею в виду уничтожение приложения, но я хотел бы знать, что происходит в других случаях, например нажатиекнопка возврата, нажатие кнопки домой и т. д.