我正在編寫一個針對API等級9或更高的應用程序。所以,我決定使用SDK提供的DownloadManager類。 我的問題是2部分 - 1.當我下載單個文件時,如何顯示下載的進度 。我看到我可以從查詢下載管理器 實例中獲得COLUMN_TOTAL_SIZE_BYTES和 COLUMN_BYTES_DOWNLOADED_SO_FAR。但我不確定是否必須將查詢放在一個線程中,並且執行一個循環以便我可以定期輪詢以更新進度 。我想,我不確定,如何定期查詢 - 它會在 的主線程中執行還是作爲可運行的 - 我的機制 不清楚。 2.如果我必須支持多個文件下載,那麼我是否必須 在它自己的線程中啓動它們中的每一個? 謝謝。同時下載文件 - 最好的方式來處理它
1
A
回答
0
如果您使用的是2.3或以上的版本,您不需要,它會自動將其顯示在狀態欄中。像這樣做,從commonsware 代碼,
private static final int DOWNLOAD_SUCCESSFUL = 100;
private static final int DOWNLOAD_FAILED = 99;
private DownloadManager mgr=null;
上創建做到這一點,
`mgr = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
registerReceiver(onComplete,
new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
`
然後在文件下載的單擊事件,
lastDownload = mgr.enqueue(new DownloadManager.Request(uri) .setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE) .setAllowedOverRoaming(false) .setTitle("Test File") .setDescription("Download zipped file.") .setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, file_name));
然後是一個廣播接收器爲wh
BroadcastReceiver onComplete=new BroadcastReceiver() {
public void onReceive(Context ctxt, Intent intent) {
findViewById(R.id.start).setEnabled(true);
File unzipFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),file_name);
//check for new file download
//extract if it's a new download
if (unzipFile.exists()) {
new UnzipFile().execute();
} else {
Toast.makeText(Main.this, "Download not found!", Toast.LENGTH_LONG).show();
}
}
};`
相關問題
- 1. 什麼是最好的方式來處理多個文件
- 2. Magento - 最好的方式來處理塊的形式?
- 3. Android - 處理下載的圖像文件的最佳方式
- 4. 最好的方法來處理OOME android
- 5. 最好的方式來處理運行時權限android
- 6. JAX-WS最好的方式來處理超時
- 7. 最好的方式來處理跨服務器php包括
- 8. 最好的方法來處理NSString Memeory
- 9. 最好的方式來處理改變python類的'模式'
- 10. ASP/ASP.NET最好的方式來處理寫權限?
- 11. 最好的方法來下載遠程文件
- 12. 最好的方式來處理$ onAuth維護離子/ angularfire
- 13. 最好的方式來讀取和處理大於0.5GB的數據文件C
- 14. 最好的方式來處理事先從檢查中遺失的文件嗎?
- 15. erlang主管最好的方式來處理ibrowse:send_req conn_failed
- 16. 最好的方式來處理這個RESTfully
- 17. 最好的方式來處理指定數據類型的NAs
- 18. 最好的處理方法
- 19. 最好的方式來處理後臺進程
- 20. 最好的做法來處理大plists?
- 21. 什麼是最好的方式來處理異步請求
- 22. NullPointerException和處理它的最佳方式
- 23. 哪種方式更好地處理AssetBundle下載管理
- 24. 什麼是最好的方式來處理DBNull的
- 25. 最好的方式來處理櫥櫃中的列表(android庫)
- 26. 更好的方式來處理下面的代碼
- 27. 最好的OO方式來處理「取消按鈕」
- 28. 在文件下載HTTP處理程序中處理404的最佳方法?
- 29. C++更好的方式來處理函數重載
- 30. 更好的方式來處理緩慢的互聯網改造
在HoneyComb上,我只能在狀態欄中看到一個下載(活動下載)。在Android 2.3.3設備上,我可以看到狀態欄中的下載總數,但狀態欄中只顯示一個(或者有時候是2個最大的)活動下載進度條。我寧願在每次下載時都顯示進度條。客戶端一次最多可下載4或5個文件。有什麼建議麼?謝謝。 – 2011-05-14 04:40:44
然後您必須手動執行,檢查每個文件的大小文件和實際傳輸量。我建議在服務中這樣做。 – Hades 2011-05-14 05:14:16