В приложении для Android, которое я разрабатываю, мне нужно создать резервную копию файла и проверить при запуске, если он идентичен удаленному файлу, если они имеют разные байты, то перезаписать резервную копию удаленным файлом,затем проверьте, одинаковы ли они, если они идентичны, верните true.Для этого у меня есть следующий процесс:
if(!backupFileExists(){
backupFile.createNewFile();
}
if(!checkBackupAndRemoteFilesAreIdentical()){ <----First Time
if(overwriteBackupFileWithRemoteFile()){
if(checkBackupAndRemoteFilesAreIdentical()){ <---- Second Time
return true;
}
}
}
return false;
Проблема заключается в том, что когда я запускаю код с AsyncTask, при втором запуске checkBackupAndRemoteFilesAreIdentical()
значение backupFile.length()
не обновляется, поэтомуон возвращает 0, который затем возвращает ложь.
Однако, если я добавлю Thread.sleep(5000)
, значение backupFile.length()
успеет обновить, оно будет успешным и вернет истину.
Есть ли в любом случаеесть эта работа без Thread.sleep(5000)
?