使用Android下載文件,并在ProgressDialog中顯示進(jìn)度我正在嘗試編寫(xiě)一個(gè)更新的簡(jiǎn)單應(yīng)用程序。為此,我需要一個(gè)簡(jiǎn)單的功能,可以下載一個(gè)文件,并顯示當(dāng)前進(jìn)度的ProgressDialog。我知道怎么做ProgressDialog,但我不知道如何顯示當(dāng)前進(jìn)度以及如何首先下載文件。
4 回答

函數(shù)式編程
TA貢獻(xiàn)1807條經(jīng)驗(yàn) 獲得超9個(gè)贊
是的,上面的代碼可以正常工作。但是如果你正在更新你progressbar
的onProgressUpdate
內(nèi)容Asynctask
而你按下后退按鈕或完成你的活動(dòng)就會(huì)AsyncTask
失去你的用戶界面。當(dāng)你回到你的活動(dòng)時(shí),即使下載是在后臺(tái)運(yùn)行,你也會(huì)看到?jīng)]有進(jìn)度條更新。因此,OnResume()
嘗試運(yùn)行一個(gè)類似于runOnUIThread
計(jì)時(shí)器任務(wù)的線程,該任務(wù)progressbar
使用從AsyncTask
正在運(yùn)行的背景更新的值來(lái)更新你的任務(wù)。
private void updateProgressBar(){ Runnable runnable = new updateProgress(); background = new Thread(runnable); background.start();}public class updateProgress implements Runnable { public void run() { while(Thread.currentThread()==background) //while (!Thread.currentThread().isInterrupted()) { try { Thread.sleep(1000); Message msg = new Message(); progress = getProgressPercentage(); handler.sendMessage(msg); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } catch (Exception e) { } }}private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { progress.setProgress(msg.what); }};
當(dāng)您的活動(dòng)不可見(jiàn)時(shí),不要忘記銷毀線程。
private void destroyRunningThreads() { if (background != null) { background.interrupt(); background=null; }}

達(dá)令說(shuō)
TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊
添加回答
舉報(bào)
0/150
提交
取消