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