Очередь DownloadManager — время начала

#android #download #android-download-manager

#Android #Скачать #android-менеджер загрузок

Вопрос:

у меня есть приложение, которое позволяет людям обновлять свои собственные приложения. Он использует диспетчер загрузок и использует очередь «DownloadManager». Проблема в том, что я хочу отслеживать, когда начинается и заканчивается загрузка (время, в течение которого продолжалась загрузка).

У меня есть приемник для проверки завершения загрузки, но как я узнаю, когда она началась, поскольку она находится в очереди?

Если бы я знал, когда его время придет в очередь, я мог бы начать отсчет времени.

Что может быть возможным решением для этого?

Ответ №1:

Возможно, вам потребуется запросить DownloadManager обновления:

 DownloadManager.Query query = new DownloadManager.Query();
query.setFilterById(downloadId);
  // downloadId is returned to you upon DownloadManager.enqueue

Cursor cursor = downloadManager.query(query);
if (cursor != null amp;amp; cursor.moveToFirst()) {
    try {
        int status = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS));
        // Decide what to do with it
        // Status are defined as constants in DownloadManager.STATUS_*
    } finally {
        cursor.close();
    }
}
  

Комментарии:

1. Спасибо, но в этом случае мне пришлось бы делать это каждую секунду, что было бы неэффективно. Я думаю, что нет решения для того, что я хочу, потому что у этого DownloadManager нет такой опции.

2. Да, я не думаю, что для этого есть прямое решение. DownloadManager, насколько я знаю, не транслирует эти изменения статуса.