DownloadManager不好用?试试ZlsamDownloadService
前一阵子,在给公司的智能电视做下载模块的时候发现,android自带的DownloadManager在有线网的情况下没有反应。看了下源码发现标准的手机版android的DownloaderManager就是没有对有线网的情况作处理,于是花了些时间自己写了个下载模块。考虑到国内大多数的智能电视都是基于手机版android改的,所以这里共享一下。
先发一下源码地址:https://github.com/zhanglong1/ZlsamDownloadService。
ZlsamDownloadService是一个可以管理多个下载任务的android服务,你把它作为DownloadManager的备选方案。具体功能如下:
支持多任务
线程安全
支持有线网环境
可以多app共享使用
持久化状态,下次启动时可以继续未完成任务
- 支持插队,对于紧急任务特别有用
最大等待队列:20;
最大处理队列:3;
最大成功队列:20;
最大失败队列:20。
如果以上参数不能满足你的需求,你可以直接在代码中更改,具体位置在TaskQueueManager。
如何使用
如果你想将代码嵌入到你自己的项目当中,你需要将ZlsamDownloadService项目改为library,并在你的项目中引用。在onStart回调中启动和绑定的代码如下:
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() {@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {mDownloadService = IMainDownloadingService.Stub.asInterface(service);appendLog("Bound to download service.");}@Overridepublic void onServiceDisconnected(ComponentName name) {mDownloadService = null;}
};
绑定成功之后你可以调用相关方法,这些方法定义在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();
}
检查任务状态:
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;
}
如果你想清除一个已经结束的(成功或者失败)任务(包括已下载的文件):
try {mDownloadService.clearOne(mFinishedTasks.get(mFinishedTasks.size() - 1));
} catch (RemoteException e) {e.printStackTrace();
}
离开界面时你要在onStop回调中解绑服务:
unbindService(mConnection);
调试命令
adb logcat ZlsamDownloadService:V *:S
Demo
你可以直接build安装并启动ZlsamDownloaderService,代码中自带的TestActivity就是一个测试Demo。
转载于:https://blog.51cto.com/9797337/2398719
DownloadManager不好用?试试ZlsamDownloadService相关推荐
- qt5 窗体显示完毕信号_iPhone手机信号不好?试试这样设置,随时随地让你的手机信号满格...
经常有小伙伴觉得自己正在使用的iPhone手机经常信号不好,其实除了一些外部因素之外,手机基带也是影响iPhone手机信号的一个重要因素.那么如何查询自己的手机使用的是什么基带?怎样提高iPhone手 ...
- 短信转化效果不好?试试这几招
一般我们收到的短信文案都是这样的: 1元商品限量疯抢!再送15元券,快来抢购吧! 但是 如果某一天,你突然收到一条这样的短信: 死鬼,这么久你都不来看我,是不是已经把我忘记了? 你是不是心神一下子就荡 ...
- 网易云海外推流部署实践
谈到直播,实时性和流畅性一直是整个服务体系中的重中之重.本文是网易云通信视频技术开发工程师何荣光在LiveVideoStack Meet杭州站沙龙的分享,着重梳理网易云在海外推流方面的部署实践,帮助开 ...
- 网易云助力云音乐短视频功能快速上线
和传统的内容创业模式相比,短视频的直观性.软性植入.内容灵活.互动性高以及更加丰富多元化的营销服务,吸引了很多人投身.除此之外,短视频往往依托于网红而诞生.网红自身所带有的高转化率.低成本和强大的粉丝 ...
- 【揭秘】视频直播关键技术
这两年互联网领域的一个热门关键词就是视频直播,从刚开始的游戏直播和秀场娱乐开始,现在各个行业里都植入了直播元素.网易云一直致力于给大家提供更好的视频服务,这篇文章聊一聊视频直播的几个关键技术: 清晰 ...
- 我有做短视频的freestyle,要来一起吗?
如果说2016年是各类直播app充斥我们日常生活的一年.那么2017年,短视频继而成了热点. 打开朋友圈,同事在巴厘岛旅游的小视频下刷出几十个赞:微博关注的女神的自拍变成了几秒的faceU,脸上带上了 ...
- 推进教育人工智能?网易云和网易波特 “四步走”
是的,以上就是在网易云创大会以"唤醒未来,技术革新推动知识共享"为主题的教育论坛上,网易云通信与视频副总经理王丹丹分享的网易云AI助教演示视频.未来,网易云将携手网易波特基于通信与 ...
- 网易云创大会如何论道科技+教育?
7月14日,围绕"唤醒未来,技术革新推动知识共享"为主题的网易云创教育论坛在杭州举行.来自新东方.好未来.iTutorGroup集团.柚子练琴.abc360. stuQ等教育行业和 ...
- 【高能】IM3.9.1版本正式上线!
本次版本更新以音频的优化为主,主要体现在音频音质和音频通话的弱网表现. 对于音质,我们综合各种用户使用场景,归纳出了三种模式:基础通话模式.高清语音模式和高清音乐模式,三种模式分别有其不同的适应场景( ...
最新文章
- pandas使用date_range函数按照指定的频率(freq)和指定的个数(periods)生成dataframe的时间格式数据列、基于dataframe的日期数据列生成日期索引
- 通过HTML的canvas实现简单的画图功能
- Java动态代理的实现
- matlab泰勒图,matlab画泰勒图
- 学习之路三十一:Varchar和NVarchar的理解
- 隐藏模块(无模块注入)
- 关于 ESP,EBP,EIP
- lost connection to MySQL server at waiting for initial communication packet,system error:o
- 苹果Apple Watch样机Mockups素材,你用过吗?
- 字符集不同导致的ORA-00972
- Q110:PBRT-V3十大基类对应的继承关系
- Redis容量及使用规划(转)
- 一个好用的不基于时间的同步文件的软件 —— Allway sync 文件同步
- flutter SliverAppBar
- echarts 多个 geo 实现缩放拖拽同步
- aspectj tomcat load-time waver
- 802.11ac双频
- ChatGPT中文使用手册
- 华为Ascend昇腾计算产业介绍
- Andriod 虚拟机