DownloadManager.ACTION_DOWNLOAD_COMPLETE широковещательный приемник, получающий один и тот же идентификатор загрузки более одного раза с разными статусами загрузки в Android

Я использую системную службу Android DownloadManger для загрузки некоторых файлов следующим образом

dwnId = mgr.enqueue(new DownloadManager.Request(serveruri)
        .setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI |
                DownloadManager.Request.NETWORK_MOBILE)
                .setAllowedOverRoaming(false)
                .setTitle(getAlbumName())
                .setDescription(getTrackName())
                .setDestinationUri(deviceUri)
                .setShowRunningNotification(true));

, где mgr - это экземпляр диспетчера загрузок, dwnId - уникальный идентификатор Я также регистрируюсь в ACTION_DOWNLOAD_COMPLETE

registerReceiver(onDownloadComplete, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));

и в методе onDownloadComplete BroadcastReceiver onReceive () я получаю идентификатор загрузки типа

Long dwnId = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, 0);

После этого я запрашиваю у диспетчера загрузки статус загрузки

Cursor c = downloadManager.query(new DownloadManager.Query().setFilterById(dwnId)); c.getInt(c.getColumnIndex(DownloadManager.COLUMN_STATUS));

для DownloadManager.STATUS_ * константы.

Проблема в том, что я дважды получаю один и тот же downId (это означает, что метод onReceive вызывается дважды), один раз со статусом DownloadManager.STATUS_SUCCESSFUL и один раз с DownloadManager. Статус STATUS_FAILED для того же dwnId. Я выдаю запрос на загрузку около 10 файлов за раз, но в диспетчере загрузок устройства он показывает количество загрузок как 12 или 13 в левой верхней части панели уведомлений. Я думаю, что у диспетчера загрузок возникла проблема с загрузкой файлов, и он возобновил или автоматически перезапустился, чтобы снова загрузить тот же файл. Вот почему существует разница между количеством файлов, которые я запрашивал для загрузки, и фактическим количеством файлов в очереди загрузки. Только из-за этого я дважды получаю одно и то же действие DownloadId complete. Если это правда, как это ограничить.Я ошибаюсь, в чем может быть причина разницы в подсчете между тем, что я запрашивал для фактической загрузки? Почему широковещательный приемник дважды получает один и тот же идентификатор загрузки. Кто-нибудь, пожалуйста, дайте мне знать?

Заранее спасибо ...

29
задан Ganesh K 21 January 2012 в 03:45
поделиться