爲什麼不設置開始下載到變量中的時間,然後進行下載。
如果花費少於5分鐘,則從下載開始的第5分鐘開始設置下一次(步驟3)。
然後,如果需要超過5分鐘,您可以決定它應該多長時間,也許有立即再次開始下載。
或者,我會做的是反向步驟2和3,並設置下載完成後5分鐘的計時器。
UPDATE:
AsyncTask
應僅用於短任務,cYrixmorten提及。 http://chintankhetiya.wordpress.com/2013/05/28/asynctask-android-example-part-1/
所以,如果它可能需要很長時間只使用兩個線程,一個做下載,一到時間下載,如果時間過長,殺死它。
有這是主線程:
class Task implements Runnable {
@Override
public void run() {
// download code here
}
}
}
監控線程:
class MonitorTask implements Runnable {
@Override
public void run() {
for (int i = 0; i <= 10; i++) {
final int value = i;
try {
Thread.sleep(1000 * 30);
downloadthread.interrupt();
} catch (InterruptedException e) {
e.printStackTrace();
}
bar.setProgress(value);
}
}
}
和主要功能:
// downloadthread is defined at the class level
downloadthread = new Thread(new Task()).start();
new Thread(new MonitorTask()).start();
我還沒有試過這種代碼,但像它應該工作。
基本上,只要停止下載線程,如果它需要太長時間,然後重置計時器再試一次。
請提供您當前正在使用的代碼。所以我們可能會幫你 – virtualpathum