十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
本篇文章為大家展示了ZlsamDownloadService怎么用,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

成都創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司,專注網(wǎng)站設(shè)計制作、網(wǎng)站設(shè)計、網(wǎng)站營銷推廣,域名注冊,虛擬主機,網(wǎng)站托管維護有關(guān)企業(yè)網(wǎng)站制作方案、改版、費用等問題,請聯(lián)系成都創(chuàng)新互聯(lián)。
前一陣子,在給公司的智能電視做下載模塊的時候發(fā)現(xiàn),android自帶的DownloadManager在有線網(wǎng)的情況下沒有反應(yīng)??戳讼略创a發(fā)現(xiàn)標準的手機版android的DownloaderManager就是沒有對有線網(wǎng)的情況作處理,于是花了些時間自己寫了個下載模塊。考慮到國內(nèi)大多數(shù)的智能電視都是基于手機版android改的,所以這里共享一下。
ZlsamDownloadService是一個可以管理多個下載任務(wù)的android服務(wù),你把它作為DownloadManager的備選方案。具體功能如下:
支持多任務(wù)
線程安全
支持有線網(wǎng)環(huán)境
可以多app共享使用
持久化狀態(tài),下次啟動時可以繼續(xù)未完成任務(wù)
支持插隊,對于緊急任務(wù)特別有用
最大等待隊列:20;
最大處理隊列:3;
最大成功隊列:20;
最大失敗隊列:20。
如果以上參數(shù)不能滿足你的需求,你可以直接在代碼中更改,具體位置在TaskQueueManager。
如果你想將代碼嵌入到你自己的項目當中,你需要將ZlsamDownloadService項目改為library,并在你的項目中引用。在onStart回調(diào)中啟動和綁定的代碼如下:
Intent intent = new Intent("com.zlsam.download.DOWNLOAD_SERVICE");
startService(intent);
bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
IMainDownloadingService mDownloadService;
private ServiceConnection mConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
mDownloadService = IMainDownloadingService.Stub.asInterface(service);
appendLog("Bound to download service.");
}
@Override
public void onServiceDisconnected(ComponentName name) {
mDownloadService = null;
}
};綁定成功之后你可以調(diào)用相關(guān)方法,這些方法定義在com.zlsam.download.IMainDownloadingService。
下載:
try {
int result = mDownloadService.add2Queue(url, null, null, false);
if (result < 0) {
appendLog("Add task failed, error code: " + result + ", url: " + url);
} else {
appendLog("Add task succeed, url: " + url);
}
} catch (RemoteException e) {
e.printStackTrace();
}插隊下載:
try {
int result = mDownloadService.add2Queue(url, null, null, true);
if (result < 0) {
appendLog("Add task jump failed, error code: " + result + ", url: " + url);
} else {
appendLog("Add task jump succeed, url: " + url);
}
} catch (RemoteException e) {
e.printStackTrace();
}檢查任務(wù)狀態(tài):
try {
state = mDownloadService.queryState(url);
} catch (RemoteException e) {
e.printStackTrace();
appendLog("Check task state: exception, url: " + url);
}
switch (state) {
case -1:
appendLog("Check task state: not found, url: " + url);
break;
case 0:
appendLog("Check task state: waiting, url: " + url);
break;
case 1:
appendLog("Check task state: processing, url: " + url);
break;
case 2:
appendLog("Check task state: succeed, url: " + url);
break;
case 3:
appendLog("Check task state: failed, url: " + url);
break;
}如果你想清除一個已經(jīng)結(jié)束的(成功或者失敗)任務(wù)(包括已下載的文件):
try {
mDownloadService.clearOne(mFinishedTasks.get(mFinishedTasks.size() - 1));
} catch (RemoteException e) {
e.printStackTrace();
}離開界面時你要在onStop回調(diào)中解綁服務(wù):
unbindService(mConnection);
調(diào)試命令
adb logcat ZlsamDownloadService:V *:S
Demo
你可以直接build安裝并啟動ZlsamDownloaderService,代碼中自帶的TestActivity就是一個測試Demo。
上述內(nèi)容就是ZlsamDownloadService怎么用,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。