ZlsamDownloadService怎么用
ZlsamDownloadService怎么用
本篇文章为大家展示了ZlsamDownloadService怎么用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
前一阵子,在给公司的智能电视做下载模块的时候发现,android自带的DownloadManager在有线网的情况下没有反应。看了下源码发现标准的手机版android的DownloaderManager就是没有对有线网的情况作处理,于是花了些时间自己写了个下载模块。考虑到国内大多数的智能电视都是基于手机版android改的,所以这里共享一下。
ZlsamDownloadService是一个可以管理多个下载任务的android服务,你把它作为DownloadManager的备选方案。具体功能如下:
支持多任务
线程安全
支持有线网环境
可以多app共享使用
持久化状态,下次启动时可以继续未完成任务
支持插队,对于紧急任务特别有用
最大等待队列:20;
最大处理队列:3;
最大成功队列:20;
最大失败队列:20。
如果以上参数不能满足你的需求,你可以直接在代码中更改,具体位置在TaskQueueManager。
如何使用
如果你想将代码嵌入到你自己的项目当中,你需要将ZlsamDownloadService项目改为library,并在你的项目中引用。在onStart回调中启动和绑定的代码如下:
Intentintent=newIntent("com.zlsam.download.DOWNLOAD_SERVICE");startService(intent);bindService(intent,mConnection,Context.BIND_AUTO_CREATE);IMainDownloadingServicemDownloadService;privateServiceConnectionmConnection=newServiceConnection(){@OverridepublicvoidonServiceConnected(ComponentNamename,IBinderservice){mDownloadService=IMainDownloadingService.Stub.asInterface(service);appendLog("Boundtodownloadservice.");}@OverridepublicvoidonServiceDisconnected(ComponentNamename){mDownloadService=null;}};
绑定成功之后你可以调用相关方法,这些方法定义在com.zlsam.download.IMainDownloadingService。
下载:
try{intresult=mDownloadService.add2Queue(url,null,null,false);if(result<0){appendLog("Addtaskfailed,errorcode:"+result+",url:"+url);}else{appendLog("Addtasksucceed,url:"+url);}}catch(RemoteExceptione){e.printStackTrace();}
插队下载:
try{intresult=mDownloadService.add2Queue(url,null,null,true);if(result<0){appendLog("Addtaskjumpfailed,errorcode:"+result+",url:"+url);}else{appendLog("Addtaskjumpsucceed,url:"+url);}}catch(RemoteExceptione){e.printStackTrace();}
检查任务状态:
try{state=mDownloadService.queryState(url);}catch(RemoteExceptione){e.printStackTrace();appendLog("Checktaskstate:exception,url:"+url);}switch(state){case-1:appendLog("Checktaskstate:notfound,url:"+url);break;case0:appendLog("Checktaskstate:waiting,url:"+url);break;case1:appendLog("Checktaskstate:processing,url:"+url);break;case2:appendLog("Checktaskstate:succeed,url:"+url);break;case3:appendLog("Checktaskstate:failed,url:"+url);break;}
如果你想清除一个已经结束的(成功或者失败)任务(包括已下载的文件):
try{mDownloadService.clearOne(mFinishedTasks.get(mFinishedTasks.size()-1));}catch(RemoteExceptione){e.printStackTrace();}
离开界面时你要在onStop回调中解绑服务:
unbindService(mConnection);
调试命令
adb logcat ZlsamDownloadService:V *:S
Demo
你可以直接build安装并启动ZlsamDownloaderService,代码中自带的TestActivity就是一个测试Demo。
上述内容就是ZlsamDownloadService怎么用,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。
推荐阅读
-
polyfills怎么按需加载
polyfills怎么按需加载本篇内容主要讲解“polyfills...
-
C#数据类型怎么实现背包、队列和栈
-
C#怎么实现冒泡排序和插入排序算法
C#怎么实现冒泡排序和插入排序算法这篇文章主要讲解了“C#怎么实现...
-
C#如何实现希尔排序
-
C#如何实现归并排序
-
C#怎么使用符号表实现查找算法
-
C#类的静态成员怎么用
C#类的静态成员怎么用这篇“C#类的静态成员怎么用”文章的知识点大...
-
C#的静态函数怎么用
C#的静态函数怎么用这篇文章主要讲解了“C#的静态函数怎么用”,文...
-
C#中的析构函数怎么用
C#中的析构函数怎么用这篇文章主要讲解了“C#中的析构函数怎么用”...
-
怎么用CZGL.ProcessMetrics监控.NET应用