次の方法でいくつかのファイルをダウンロードするためにAndroidDownloadMangerシステムサービスを使用しています
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
は一意のIDが返されます。私も登録していますACTION_DOWNLOAD_COMPLETE
registerReceiver(onDownloadComplete, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
そして、onDownloadComplete BroadcastReceiverのonReceive()メソッドで、ダウンロードIDを取得しています。
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_*定数の場合。
問題は、同じdwnIdに対して同じdownIdを2回(onReceiveメソッドが2回呼び出されることを意味します)、1回はDownloadManager.STATUS_SUCCESSFULステータスで、もう1回はDownloadManager.STATUS_FAILEDステータスで受信していることです。一度に約10個のファイルをダウンロードするように要求していますが、デバイスのダウンロードマネージャーでは、左上の通知バーにダウンロード数が約12または13と表示されています。ダウンロードマネージャーはファイルのダウンロードに問題があり、同じファイルを再度ダウンロードするために再開または自動的に再起動したと思います。そのため、ダウンロードを要求したファイル数とダウンロードキューの実際の数に違いがあります。このため、同じDownloadIdの完全なアクションを2回取得しています。これが本当なら、それを制限する方法。実際のダウンロードを要求したものとのカウントの違いの理由は何でしょうか?放送受信機が同じダウンロードIDを2回受信するのはなぜですか。誰か教えてもらえますか?
前もって感謝します...