5確定了每個線程負責下載的區間,建立線程集合,存放所有工作線程,還要建立數據庫存儲每個線程這次下載的文件塊的第一個字節、最後一個字節、本次下載的容量,線程的id(用於標記線程)、URL地址。然後啓動多個線程,發送HTTP請求獲取數據,通過輸入流把文件讀入後,RandomAccessFile保存在本地。(RandomAccessFile對應SD卡上的文件,RandomAccessFile.seek()方法可以指定從文件的某個位置開始寫入,所有線程利用同一個RandomAccessFile在文件的某個位置開始寫入字節,所有線程都讀取完後,在SD卡上就形成了我們看到的文件。
6 如果線程上次已經下載了一部分,下次繼續下載的話,要從數據庫中取出上次下載的字節總數,重新記錄本次下載的起始字節和終止字節(下次下載的起始字節是start = id * block + currentDownloadSize,終止字節是end = (id + 1) * block)
參考:
http://www.cnblogs.com/hanyonglu/archive/2012/02/20/2358801.html
http://blog.csdn.net/shimiso/article/details/6763986
http://blog.csdn.net/shimiso/article/details/8448544