1

それに関する情報は見つかりませんでした。ダウンロードマネージャーのリクエストステータスの変更をリッスンすることは何とか可能ですか? ダウンロードのためにいくつかのファイルをキューに入れ、ダウンロード状態のリストに表示します。DownloadManager.ACTION_DOWNLOAD_COMPLETE でのみブロードキャストを受信しますが、ダウンロード リクエストの変更を追跡できるように、何らかの通知を受信したり、リスナーを設定したりしたいと考えています。表示状態が欲しい - キューに追加、ダウンロード中、ダウンロード中...

私が見る唯一の方法は、クエリ downloadmanager と状態に関するすべての要求を確認することですが、listadapter getview メソッドでそれを行う必要があり、あまり効率的ではありません。

4

1 に答える 1

2

公式ドキュメントによると、これを行う良い方法はありません。 http://developer.android.com/reference/android/app/DownloadManager.html

サービスを開始するか、数秒ごとにダウンロードのステータスを照会する何らかのバックグラウンド スレッドを開始することをお勧めします。(setFilterById には long[] がかかるため、ID を long[] で追跡します)

long[] ids = new long[MyDownloadQueue.length];
// Look at all these requests I'm building!
ids[i++] = dm.enqueue(request);

Cursor cursor = dm.query(new DownloadManager.Query().setFilterById(ids));
while (cursor.moveToNext()) {
  int columnIndex = cursor.getColumnIndex(DownloadManager.COLUMN_STATUS);
  int status = cursor.getInt(columnIndex);
  int columnReason = cursor.getColumnIndex(DownloadManager.COLUMN_REASON);
  int reason = cursor.getInt(columnReason);
  // your stuff here, recording the status and reason to some in memory map
}

この方法では、リストビューは何の作業も行う必要がなく、UI はスムーズに保たれます。私が知っているより良い方法は実際にはありません。申し訳ありませんが、クエリを含まない回答を提供できませんでした。

于 2013-01-04T14:16:52.703 に答える