Android будет выполнять синхронизацию, когда это необходимо - например, когда экран выключается, выключается устройство и т. Д. Если вы просто смотрите на «нормальную» работу, явная синхронизация приложениями никогда не требуется.
Проблема возникает, когда пользователь вытаскивает батарею из своего устройства (или выполняет полную перезагрузку ядра), и вы хотите убедиться, что вы не потеряете данные.
Итак, первое, что нужно понять: проблема в том, что внезапно отключается питание, поэтому не может произойти полное отключение, и вопрос о том, что произойдет в постоянном хранилище в этой точке.
Если вы просто пишете один независимый новый файл, это не имеет значения, что вы делаете. Пользователь мог вытащить батарею, когда вы находились в процессе написания, прямо перед тем, как начать писать и т. Д. Если вы не синхронизируете, это просто означает, что с момента, когда вы закончили писать, прошло больше времени, во время которого вы извлекали батарею потеряет данные.
Большая проблема здесь, когда вы хотите обновить файл. В этом случае при следующем чтении файла вы хотите иметь либо предыдущее содержимое, или новое содержимое. Вы не хотите писать что-то наполовину или терять данные.
Это часто делается путем записи данных в новый файл, а затем переключения на них из старого файла. До ext4 вы знали, что после того, как вы закончили запись файла, дальнейшие операции с другими файлами не будут выполняться на диске до тех, которые находятся над этим файлом, так что вы можете безопасно удалить предыдущий файл или выполнить операции, которые зависят от вашего нового файла. будучи полностью написанным.
Однако теперь, если вы пишете новый файл, затем удаляете старый, и батарея извлекается, при следующей загрузке вы можете увидеть, что старый файл удален и создан новый файл, но содержимое нового файла не полный. Выполняя синхронизацию, вы гарантируете, что новый файл будет полностью записан в этот момент, чтобы можно было вносить дальнейшие изменения (например, удаление старого файла), которые зависят от этого состояния.