Я запускаю загрузку файла 2Gb с помощью DownloadManager, и при этом я предлагаю пользователю выбрать, где они хотят сохранить это файл: внутреннее хранилище или SD-карта. Кроме того, я предоставляю пользователю возможность отменить указанную загрузку. Вот мой код:DownloadManager занимает 3-5 минут, чтобы остановить загрузку, только когда используется SD-карта
DownloadManager.Query query = new DownloadManager.Query();
query.setFilterById(downloadId);
Cursor cursor = downloadManager.query(query);
try {
if (cursor.moveToFirst()) {
int status =cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS));
if (status == DownloadManager.STATUS_RUNNING ||
status == DownloadManager.STATUS_PENDING) {
downloadManager.remove(downloadId);
}
}
} finally {
cursor.close();
}
Моя проблема: при загрузке во внутреннюю память, то .remove (downloadId) вызов работает мгновенно, а загрузка прекращается. Но при загрузке на SD-карту (на Samsung Galaxy S7 Edge), используя тот же код, для остановки загрузки требуется 3-5 минут.
Любые идеи по устранению этой задержки?
Редактировать: некоторые примеры дорожки, возвращаемые Activity.getExternalFilesDirs():
/storage/emulated/.../ - это внутренний
/хранение/0123-4567/.../- это SD карта
Можете ли вы привести примеры путей, которые вы считаете встроенными и на SD-карте? – greenapps
только что отредактировал вопрос, чтобы добавить пути – zrgiu
/storage/emulated/0/...... называется внешним хранилищем. Получено с помощью getExternalStorageDirectory(). Но я не вижу решения. Прости. Вы тестировали другие устройства? – greenapps