android 后台服务多任务下载界面刷新机制
来源:互联网 发布:2017日本制造业数据 编辑:程序博客网 时间:2024/04/28 04:29
最近的一个项目中需要实现后台服务多任务下载,在前台界面显示进度。这就需要监听每一个下载任务的进度并不断的刷新界面的进度,但是因为我这个进度条界面会有很多的图片,然后每个下载任务都会发消息给界面处理,造成界面刷新非常的频繁,导致图片不能显示,并且会让界面非常卡。针对这种情况,我采用了两个办法有效解决了这个问题。
1、统一刷新界面
因为多个任务都会不断的像界面发消息要求刷新界面,太过频繁。我的想法是统一处理,在handler处理消息的方法中,我通过时间进行判断,怎么实现呢?就是将上次处理的时间记录下来,然后如果后面接收到的消息与上次的消息时间差小于1000ms,我就直接返回,不对消息进行处理,这样就可以实现1000ms或者500ms统一刷新每个进度,而不是来一个消息就处理。
public void handleMessage(Message msg) {
switch (msg.what) {
case UPDATA:
if(System.currentTimeMillis() - lastUpdatedTime > UPDATE_GAP){ //判断时间差
update(downingList); //更新数据的逻辑
lastUpdatedTime = System.currentTimeMillis(); //记录下处理消息的时间
}
break;
}
2、通过集合记录下要刷新的控件
前台显示进度的界面可能有很多加载比较耗时的图片等元素,但是我们实际需要更新的可能就只是progressbar或者text等控件,这样我们就不必要每次都adapter.notifyDataSetChanged(),这样如果有过多图片加载会比较慢,或者就可能出现图片不能显示的问题,因为所有图片加载可能就需要1000或500ms,还没等图片加载完,又再一次执行刷新操作,这样我们就看不到图片了。要解决这个问题很简单,我们可以将要更新的控件通过map集合保存,然后刷新的时候取出来只刷新需要刷新的控件,这样就能完美解决问题。
- android 后台服务多任务下载界面刷新机制
- 多任务下载,并在下载管理界面刷新进度条
- android 单线程多任务断点排队下载(支持多界面刷新)
- URLSession 后台多任务下载
- Android 实现service后台多任务下载notification进度条更新
- android后台下载多文件切换界面更新问题
- android java开发 第四天 之(后台服务处理完业务数据后,传送给ui Activity并刷新界面)
- android 实现后台服务及源码下载
- iOS 多任务(后台服务)
- 后台多任务多线程断点下载
- 后台多任务多线程断点下载
- android AsyncTask 可以更新界面的后台任务
- ios后台刷新,后台定位,后台下载
- android 功能代码 后台服务通过广播更新Activity界面
- 返璞归真,运用Android广播机制来通知界面刷新
- Android下载器 支持多任务、多界面管理、可断点
- ios 切换多任务后台界面应用闪屏
- Android多任务机制科普
- 怎么把MD5编译过的字段又还原过来呢?
- Android 进程和线程模型
- Extjs4---用MVC做的后台管理系统 之三
- RAM,ROM,FLASH存储器区别
- js验证表单正则表达式
- android 后台服务多任务下载界面刷新机制
- 排行榜数据结构实现
- java构造函数之private,protected
- The Java Memory Model
- K3登录出现如下问题
- VIM的列编辑操作
- java 面向对象浅谈 欢迎拍砖
- 转移至新服务器 网站出问题解决办法
- Window忘记密码