退出Activity时AsynTask的处理
2016-04-12 11:48
197 查看
当进入一个详细页面,这时程序会弹出一个对话框加载网络数据,可是发现用户经常因为数据加载慢,就快速的退出这个页面,这样反复来回几次后,发现AsyncTask不再继续加载,而是慢慢的等待,查了下个数,是前几个没有及时的关闭,导致当前的异步任务一直在等待。
所以我们在退出Activity时,如果AsynTask还在运行,我们应该取消AsynTask的加载,以便为下次的加载提供通道,不阻塞队列,代码如下:
UI线程:
所以我们在退出Activity时,如果AsynTask还在运行,我们应该取消AsynTask的加载,以便为下次的加载提供通道,不阻塞队列,代码如下:
public class Task extends AsyncTask<Void, Void, Void>{ @Override protected Void doInBackground(Void... path) { // Task被取消了,马上退出循环 if(isCancelled()) return null; } @Override public void onProgressUpdate(File... files) { // Task被取消了,不再继续执行后面的代码 if(isCancelled()) return; ......... } }
UI线程:
// 保持对Task的引用,声明变量 private PhotoTask task; // 1,创建对象,启动新的任务 task = new PhotoTask(); task.execute(path); // 2,在onDestory()方法中取消正在执行的任务 if (task != null && task.getStatus() == AsyncTask.Status.RUNNING) { task.cancel(true); // 如果Task还在运行,则先取消它 }
相关文章推荐
- RA layer request failed
- MySQL数据库——常用操作命令
- 手把手教会popupWindow从下往上弹出效果的实现
- PHP递归生成树形数组
- eclipse中的web-inf下没有web.xml
- mysql主键自增长获取
- PHP中Restful api 错误提示返回值实现思路
- Xjad配置
- notepad 删除^M
- Redis实现分布式锁
- 法线从object space到eye space的转换((normal matrix)
- GPU Analyzer 神器:Intel INDE
- 外部类内部类之间调用的demo
- 山东省第一届ACM省赛 C SDUT 2153 Clockwise(dp+计算几何)
- IMG图片和文字同一行显示,图片和文字居中显示
- Zookeeper安装
- 3 字节的 UTF-8 序列的字节 3 无效。
- 动画类型
- 关于如何通过recycleview实现聊天界面的效果
- maven常用命令