2012-09-28 1 views
0

나는 그것에 관한 어떤 정보도 찾지 못했습니다. downloadmanager 요청 상태 변경을 수신 대기 중입니까? 다운로드 할 파일을 거의 대기열에 두지 않고 목록에 다운로드 상태로 표시합니다. DownloadManager.ACTION_DOWNLOAD_COMPLETE에서만 방송을 수신하지만 일부 알림을 받거나 일부 청취자를 설정하여 다운로드 요청 변경 사항을 추적 할 수 있습니다. 큐에 표시 상태를 다운로드하고, 다운로드하고 싶습니다 ...Downloadmanager 요청 상태 변경 알림

쿼리 다운로드 관리자와 상태에 대한 모든 요청을 확인하는 방법은 listadapter getview 메서드에서 수행해야하며 매우 좋지는 않습니다. 실력 있는.

답변

2

공식 문서에 따르면이 작업을 수행하는 좋은 방법은 아닙니다. http://developer.android.com/reference/android/app/DownloadManager.html

몇 초마다 다운로드 상태를 쿼리하는 서비스 나 백그라운드 스레드를 시작하는 것이 좋습니다. 은 (setFilterById이 필요하기 때문에, 긴 [] 자신의 ID의 추적 오래 [])

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가 원활하게 유지됩니다. 그러나 내가 아는 더 나은 방법은 정말 없습니다. 미안 쿼리를 포함하지 않은 답변을 제공 할 수 없습니다.