開(kāi)篇
本文閱讀需10分鐘族沃,簡(jiǎn)單易上手频祝,屬于安卓開(kāi)發(fā)教程的基礎(chǔ)部分。
建議精讀脆淹,深刻理解大意常空。多做實(shí)踐。多寫代碼盖溺。
本文章由做全棧攻城獅原創(chuàng)首發(fā)漓糙。
同名公眾號(hào)已開(kāi)啟,官網(wǎng)www.8z5.net烘嘱。
寫代碼也要讀書昆禽,愛(ài)全棧,更愛(ài)生活蝇庭。每日更新原創(chuàng)IT編程技術(shù)及日常實(shí)用技術(shù)文章醉鳖。
我們的目標(biāo)是:玩得轉(zhuǎn)服務(wù)器Web開(kāi)發(fā),搞得懂移動(dòng)端哮内,電腦客戶端更是不在話下盗棵。
更多原創(chuàng)教程,關(guān)注微信公眾平臺(tái):做全棧攻城獅。及做全棧攻城獅官網(wǎng):www.8z5.net
本文章由做全棧攻城獅纹因,原創(chuàng)首發(fā)喷屋,如有轉(zhuǎn)載,請(qǐng)聲明出處瞭恰。小編微信:aiquanzhan屯曹。
這是做全棧攻城獅原創(chuàng)的安卓開(kāi)發(fā)系列教程,現(xiàn)在是安卓的基礎(chǔ)篇惊畏,希望能以我微薄之力恶耽,能幫助那些正在學(xué)習(xí)或者將要學(xué)習(xí)安卓開(kāi)發(fā)的同仁。當(dāng)然技術(shù)性教程陕截,因?yàn)橹R(shí)的相關(guān)性驳棱,推薦按照順序進(jìn)行學(xué)習(xí)。上篇課程:安卓學(xué)習(xí)教程-帶你制作高效率多線程下載工具农曲,快速下載網(wǎng)絡(luò)文件
接著上次課程社搅,實(shí)現(xiàn)了三個(gè)線程的文件下載功能。首先回顧一下乳规。大體流程如下:
首先獲取遠(yuǎn)程文件的大小形葬,根據(jù)遠(yuǎn)程文件大小創(chuàng)建本地隨機(jī)文件。
根據(jù)線程數(shù)量和文件的大小暮的,計(jì)算出每個(gè)線程的需要下載文件的那個(gè)部分笙以。
分別調(diào)用線程進(jìn)行下載寫入到文件的對(duì)應(yīng)位置。
必要性
多線程下載確實(shí)提高了下載的效率冻辩,縮短了用戶下載的時(shí)間猖腕。但是,不得不去考慮當(dāng)用戶下載過(guò)程中恨闪,突然斷網(wǎng)或者關(guān)閉App的情況倘感。一方面為了更好的用戶體驗(yàn),另一方面減少服務(wù)器壓力咙咽。我們不得不去考慮老玛,實(shí)現(xiàn)斷點(diǎn)續(xù)傳功能。
例如手機(jī)迅雷钧敞,關(guān)閉之后蜡豹,在下次進(jìn)行下載時(shí),依舊可以在已經(jīng)下載的文件基礎(chǔ)之上溉苛,繼續(xù)下載镜廉。
斷點(diǎn)續(xù)傳實(shí)現(xiàn)思路
為了實(shí)現(xiàn)文件斷點(diǎn)續(xù)傳,這里使用文件記錄每次下載位置愚战。當(dāng)下次下載進(jìn)入時(shí)桨吊,判斷其是否含有位置記錄信息威根。如果有則按照位置進(jìn)行下載。
實(shí)現(xiàn)斷點(diǎn)續(xù)傳
單個(gè)線程在下載時(shí)视乐,每次寫入下載文件時(shí),保存位置信息到位置信息文件敢茁。
新建變量存儲(chǔ)當(dāng)前下載了的位置佑淀,并初始化,為了防止沒(méi)有下載過(guò)的情況彰檬,所以一開(kāi)始的位置為StartIndex:
在讀取InputStream進(jìn)行寫入隨機(jī)文件的時(shí)候伸刃,保存已經(jīng)下載的位置信息到文件:
這樣就把位置文件信息保存到本地了。再次進(jìn)行下載的時(shí)候需要去檢查一下是否存在位置信息文件逢倍。根據(jù)位置去服務(wù)器獲取數(shù)據(jù)捧颅,進(jìn)行下載:
刪除位置文件
文件下載完畢,應(yīng)刪除位置文件较雕,也就是說(shuō)所有的縣城執(zhí)行完畢之后碉哑,表示文件下載完成。需要記錄下下載完成數(shù)量亮蒋,設(shè)置一個(gè)計(jì)數(shù)器保存線程數(shù)量扣典,當(dāng)計(jì)數(shù)器等于0或者小于0的時(shí)候,說(shuō)明沒(méi)有現(xiàn)成在下載了慎玖。文件下載完畢贮尖。
完整代碼:
這是使用原聲方式進(jìn)行多線程下載工具的開(kāi)發(fā)。當(dāng)然面對(duì)下載這個(gè)常用的功能一定會(huì)有第三方的下載lib趁怔。所以下一節(jié)講解使用開(kāi)源框架進(jìn)行文件下載湿硝。
安卓程序員們,討論起來(lái)吧润努。不是專業(yè)安卓出身关斜,如有錯(cuò)誤請(qǐng)及時(shí)指正哦。
END.
我是成傲天任连。
生活在不出名的本科院校蚤吹,白天是學(xué)生族,晚上是程序員和知識(shí)服務(wù)工作者随抠。
讀完我的文章如果有收獲裁着,記得打賞、關(guān)注和點(diǎn)贊哦拱她!