課程
/移動(dòng)開發(fā)
/Android
/Android-Service系列之多線程斷點(diǎn)續(xù)傳下載
2016-03-28
源自:Android-Service系列之多線程斷點(diǎn)續(xù)傳下載 4-1
正在回答
這個(gè)一般都是最后一次文件寫入完時(shí)間沒有一個(gè)周期,最簡單的辦法,就是直接在接收到下載完成的廣播后,強(qiáng)制設(shè)置進(jìn)度為100即可
我是這樣寫的??只貼主要代碼 while?((len?=?input.read(buffer))?!=?-1){ //寫入文件 ????????raf.write(buffer,0,len); ????????//累加整個(gè)文件的下載進(jìn)度 ????????finished?+=?len; ????????//累加每個(gè)線程的下載進(jìn)度 ????????mThreadInfo.setFinished(mThreadInfo.getFinished()?+?len); ????????//發(fā)送廣播給activity ????????intent.putExtra("finished",(int)(finished*1.0/fileinfo.getLength()*100)); ????????intent.putExtra("id",fileinfo.getId()); ????????mContext.sendBroadcast(intent); ????????//在下載暫停是把下載進(jìn)度保存在數(shù)據(jù)庫 ????????if(isPause){ ????????????Log.e("11111","線程保存=="+mThreadInfo.getFinished()); ????????????mDAO.updateThread(mThreadInfo.getUrl(),mThreadInfo.getId(),mThreadInfo.getFinished()); ????????????return; ????????} ????} ????我并沒有做500毫秒的限制?我會(huì)一直發(fā)???但是我再接受的時(shí)候做了判斷?請(qǐng)看 ???? ????if(DownLoadService.ACTION_UPDATE.equals(intent.getAction())){ ????int?finished?=?intent.getIntExtra("finished",0); ?????????if(progress?!=?finished){ ?????????????progress?=?finished; ?????????????mProgressH.setProgress(finished); ?????????????mProgressR.setProgress(finished); ?????????} } 定義個(gè)變量來比對(duì)穿過來的數(shù)值??不一樣就更新進(jìn)度條??并且把最新的進(jìn)度賦值給我們定義的變量??等傳過來的大于我們的變量就接著更新進(jìn)度條??如此循環(huán)?完美解決
最后一次廣播沒有發(fā)回界面,可以在while里判斷一下當(dāng)下載內(nèi)容的進(jìn)度達(dá)到文件的length時(shí)提交一次100使進(jìn)度條填充滿
因?yàn)楫?dāng)你下載完成的時(shí)候 離與上次發(fā)送廣播沒有500毫秒 所以就沒有發(fā)送廣播更新 可以在while循環(huán)結(jié)束時(shí)再發(fā)送一次廣播
舉報(bào)
本視頻教程主要代領(lǐng)我們要學(xué)習(xí)的多線程續(xù)傳下載程序的開發(fā)
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2018-11-27
這個(gè)一般都是最后一次文件寫入完時(shí)間沒有一個(gè)周期,最簡單的辦法,就是直接在接收到下載完成的廣播后,強(qiáng)制設(shè)置進(jìn)度為100即可
2017-09-19
2016-12-17
最后一次廣播沒有發(fā)回界面,可以在while里判斷一下當(dāng)下載內(nèi)容的進(jìn)度達(dá)到文件的length時(shí)提交一次100使進(jìn)度條填充滿
2016-05-13
因?yàn)楫?dāng)你下載完成的時(shí)候 離與上次發(fā)送廣播沒有500毫秒 所以就沒有發(fā)送廣播更新 可以在while循環(huán)結(jié)束時(shí)再發(fā)送一次廣播