Я пишу прикладной таргетинг API уровня 9 или выше. Так что я решили пойти с DownloadManager Class, который предлагает SDK. Мой вопрос - 2 части - 1. Когда я загружаю один файл, как я показываю прогресс загрузки. Я вижу, я могу получить COLUMN_TOTAL_SIZE_BYTES и COLUMN_BYTES_DOWNLOADED_SO_FAR из запроса менеджера загрузки пример. Но я не уверен, что мне нужно поставить запрос в поток и реализовать цикл, чтобы я мог регулярно опроса, чтобы обновить прогресс бар. Я думаю, я не уверен, как запросить регулярно - будет ли он основной поток или быть реализованным как runnable - механизм я не ясно. 2. Если мне нужно поддерживать несколько загрузок файлов, тогда я должен запускать каждый из них в свою собственную нить? Спасибо.
Если вы строите на 2.3 и выше, вам это не нужно, оно автоматически отображает его в строке состояния. Делай это так, Код из общедоступного контента,
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));
И затем широковещательный приемник, когда ваши донгрузы компилируются,
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 a new download
if (unzipFile.exists()) {
new UnzipFile().execute();
} else {
Toast.makeText(Main.this, "Download not found!", Toast.LENGTH_LONG).show();
}
}
};`