Android SDK 29: размер последнего сохраненного файла составляет 0 байт после выключения устройства.Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Android SDK 29: размер последнего сохраненного файла составляет 0 байт после выключения устройства.

Сообщение Anonymous »

На моем устройстве установлена ​​версия SDK 29 для Android. Внутреннего аккумулятора нет, питается от 12В. Для включения/выключения питания мы просто используем проводной переключатель, поэтому выключение питания осуществляется путем жесткого отключения питания во время работы Android.
У нас возникает большая проблема при сохранении файла во внутреннюю память (в приложение). папка). Например, мы сохранили файл, и независимо от того, произойдет ли отключение питания через несколько секунд или даже через полчаса, последний сохраненный файл имеет размер 0 байт.
На данный момент мы с этим справились. сохранив фиктивный файл последним, потому что мы думали, что даже если он будет уничтожен, ничего страшного не произойдет и с конкретным файлом все будет в порядке. Кроме того, мы добавили процесс чтения файла в функцию сохранения.
Частота появления проблем была уменьшена, но иногда конкретный файл также пуст после аппаратного отключения питания.
Вот фрагмент функции сохранения:

Код: Выделить всё

                    File task_dummy = new File(file_folder, "dummy_task.dmt");
String file = generate_task_JSON_file(task);

if (file != null){

if(task_data.exists())
task_data.delete();
task_data.createNewFile();
if(task_dummy.exists())
task_dummy.delete();
task_dummy.createNewFile();

FileOutputStream fos = new FileOutputStream(task_data.getPath());
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(file);
oos.close();
fos.close();
oos.flush();
fos.flush();

fos = new FileOutputStream(task_dummy.getPath());
oos = new ObjectOutputStream(fos);
oos.writeObject(file);
oos.close();
fos.close();
oos.flush();
fos.flush();

try{
FileInputStream fin = new FileInputStream(task_data);
ObjectInputStream ois = new ObjectInputStream(fin);
String file_string =   ois.readObject().toString();
ois.close();
fin.close();
} catch (ClassNotFoundException e) {

}

}
Какой хороший и безопасный способ правильно сохранить данные?
Большое спасибо.
Лукаш

Подробнее здесь: https://stackoverflow.com/questions/790 ... -power-off
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»