Вам нужно сначала выяснить, сколько байтов вы действительно загрузили. Я предлагаю сохранить ваш файл с другим именем при его загрузке, чтобы вы могли легко увидеть, есть ли у вас незавершенная загрузка.
Сначала проверьте статус файла, чтобы узнать, сколько вы загрузили.
private long isIncomplete(){
File from = new File(dir,fileName+"-incomplete");
if(from.exists()){
Log.d("status","download is incomplete, filesize:" + from.length());
return from.length();
}
return 0;
}
Затем, создавая свой http-запрос, вы можете сообщить серверу, с какого момента он будет служить вам, чтобы вы могли возобновить загрузку.
long downloaded = isIncomplete();
urlConnection.setRequestProperty("Range", "bytes="+(downloaded)+"-");
См this class, что я написал несколько лет назад для полного осуществления.
Обновление: Я предлагаю вам не использовать общие настройки для этого. SSOT заявляет, что вы получаете информацию только из одного источника, не более того, считывая прогресс из загруженного файла.
Храните значение в [Shared Preferences] (https://developer.android.com/reference/android/content/SharedPreferences.html) и ваша проблема будет решена. –