老師我也是跟著敲的,但是我下載一半,停止之后,再下載,進(jìn)度條又從0開始了,咋回事?。?/h1>
老師我也是跟著敲的,但是我下載一半,停止之后,再下載,進(jìn)度條又從0開始了,咋回事???
老師我也是跟著敲的,但是我下載一半,停止之后,再下載,進(jìn)度條又從0開始了,咋回事???
老師我也是跟著敲的,但是我下載一半,停止之后,再下載,進(jìn)度條又從0開始了,咋回事???
今天剛學(xué),我也碰到了類似的問題。通過debug發(fā)現(xiàn)是int溢出了。100*下載進(jìn)度那里發(fā)生了溢出。解決辦法是先將除數(shù)和被除數(shù)分別都轉(zhuǎn)換稱double,然后再將運(yùn)算的結(jié)果強(qiáng)制轉(zhuǎn)換為int。(看下面畫線部分)
????????????????????//下載進(jìn)度發(fā)送廣播給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);
?? ??? ??? ??? ??? ??? ?}
沒有將finish存入線程信息中,mThreadDAO.updateThread(mThreadInfo.getUrl(),?? mThreadInfo.getId(), mFinished);
在 download() 方法中,要將 mFileInfo 的finished 參數(shù)用數(shù)據(jù)庫中的數(shù)值賦值:
??? public void download() {
?? ??? ?// 讀取數(shù)據(jù)庫的線程信息
?? ??? ?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
?? ??? ?}
?? ??? ?//創(chuàng)建子線程,進(jìn)行下載
?? ??? ?new Thread(new DownloadThread(threadInfo)).start();
?? ?}
LZ找到原因了嗎。我也是
舉報(bào)
2015-06-02
可能是進(jìn)度沒有保存起來,或者讀取進(jìn)度有問題,檢查下