亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

老師我也是跟著敲的,但是我下載一半,停止之后,再下載,進度條又從0開始了,咋回事???

老師我也是跟著敲的,但是我下載一半,停止之后,再下載,進度條又從0開始了,咋回事?。?/p>

正在回答

4 回答

可能是進度沒有保存起來,或者讀取進度有問題,檢查下

0 回復 有任何疑惑可以回復我~

今天剛學,我也碰到了類似的問題。通過debug發現是int溢出了。100*下載進度那里發生了溢出。解決辦法是先將除數和被除數分別都轉換稱double,然后再將運算的結果強制轉換為int。(看下面畫線部分)

????????????????????//下載進度發送廣播給activity
?? ??? ??? ??? ??? ??? ?mFinished+=length;
?? ??? ??? ??? ??? ??? ?if(System.currentTimeMillis()-time>500){
?? ??? ??? ??? ??? ??? ??? ?time = System.currentTimeMillis();
?? ??? ??? ??? ??? ??? ??? ?intent.putExtra("finished", (int)(1.00*mFinished*100/(1.00*mFileInfo.getLength())));
?? ??? ??? ??? ??? ??? ??? ?mContext.sendBroadcast(intent);
?? ??? ??? ??? ??? ??? ?}


1 回復 有任何疑惑可以回復我~

沒有將finish存入線程信息中,mThreadDAO.updateThread(mThreadInfo.getUrl(),?? mThreadInfo.getId(), mFinished);

在 download() 方法中,要將 mFileInfo 的finished 參數用數據庫中的數值賦值:

??? public void download() {
?? ??? ?// 讀取數據庫的線程信息
?? ??? ?List<ThreadInfo> threads = mThreadDAO.getThread(mFileInfo.getUrl());
?? ??? ?ThreadInfo threadInfo = null;
?? ??? ?if (threads.size() == 0) {
?? ??? ??? ?
?? ??? ??? ?//初始化線程信息
?? ??? ??? ?threadInfo = new ThreadInfo(mFileInfo.getId(), mFileInfo.getUrl(),
?? ??? ??? ??? ??? ?0, mFileInfo.getLength(),0);
?? ??? ?}else{
?? ??? ??? ?threadInfo = threads.get(0);
?? ??? ??? ?mFileInfo.setFinished(threadInfo.getFinished());? //沒有這步,mFileInfo的finished就是0
?? ??? ?}
?? ??? ?//創建子線程,進行下載
?? ??? ?new Thread(new DownloadThread(threadInfo)).start();
?? ?}


0 回復 有任何疑惑可以回復我~

LZ找到原因了嗎。我也是

0 回復 有任何疑惑可以回復我~
#1

撲通撲通丶我的人生 提問者

沒有呢
2015-08-06 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
Android-Service系列之斷點續傳下載
  • 參與學習       20431    人
  • 解答問題       103    個

想升職加薪么?本章課程你值得擁有,滿滿的干貨,學起來吧

進入課程

老師我也是跟著敲的,但是我下載一半,停止之后,再下載,進度條又從0開始了,咋回事???

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號