android线程管理
来源:互联网 发布:移动互联网数据 编辑:程序博客网 时间:2024/04/28 07:07
public class TaskManager { public String tag = "TaskManager"; public List<TaskModel> taskList = new ArrayList<TaskModel>(); private static TaskManager instance; private TaskManager() { } public static synchronized TaskManager getTaskManagerInstance() { if (instance == null) { instance = new TaskManager(); } return instance; } /** * 添加线程 */ public void addTask(String tagString,BaseTask task){ try { TaskModel taskModel = new TaskModel(); taskModel.tagString = tagString; taskModel.task = task; taskModel.creatTime = System.currentTimeMillis(); taskList.add(taskModel);// LogUtil.e("******addTask*******"+ System.currentTimeMillis()); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } /** * 关闭所有还在运行的线程 */ public void cancelAllTasks(){ for(int i=0;i<taskList.size();i++){ try { TaskModel taskModel = taskList.get(i); if(taskModel.task!=null){ taskModel.task.cancel(true); } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } taskList.clear(); } /** * 关闭tagString所标识的Activity或者Fragment中所有还在运行的线程 * @param tagString */ public void cancelLimitTasks(String tagString){ List<TaskModel> taskModels = new ArrayList<TaskModel>(); for(int i=0;i<taskList.size();i++){ try { TaskModel taskModel = taskList.get(i); if(taskModel.tagString.equals(tagString)&&taskModel.task!=null){ long time = System.currentTimeMillis()-taskModel.getCreatTime(); if (time>500){ taskModel.task.cancel(true); taskModels.add(taskModel);// LogUtil.e("******cancelLimitTasks*******"+ System.currentTimeMillis()); } } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } for (int i=0;i<taskModels.size();i++){ try { taskList.remove(taskModels.get(i)); }catch (Exception e){ e.printStackTrace(); } } } /** * 关闭一个还在运行的线程 */ public void cancelOneTasks(BaseTask task){ for(int i=0;i<taskList.size();i++){ try { TaskModel taskModel = taskList.get(i); if(taskModel.task!=null&&taskModel.task==task){ taskModel.task.cancel(true); taskList.remove(taskModel);// LogUtil.e("******cancelOneTasks*******"+ System.currentTimeMillis()); break; } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } /** * 移除task * @param task */ public void removeTask(BaseTask task){ for(int i=0;i<taskList.size();i++){ try { TaskModel taskModel = taskList.get(i); if(taskModel.task!=null&&taskModel.task==task){ taskList.remove(taskModel); break; } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } public class TaskModel{ long creatTime; String tagString; BaseTask task; public long getCreatTime() { return creatTime; } public void setCreatTime(long creatTime) { this.creatTime = creatTime; } public String getTagString() { return tagString; } public void setTagString(String tagString) { this.tagString = tagString; } public BaseTask getTask() { return task; } public void setTask(BaseTask task) { this.task = task; } }}
0 0
- Android 线程池管理 .
- Android 线程池管理
- Android 线程池管理
- Android 线程池管理
- Android 线程池管理
- Android 线程池管理
- Android 线程池管理
- Android 线程池管理
- Android 线程池管理
- Android 线程池管理
- android线程管理
- 管理android线程池
- Android 线程池来管理线程
- Android 线程池来管理线程
- Android线程管理——线程通信
- Android 线程池来管理线程
- Android线程管理之ExecutorService线程池
- Android线程管理之ExecutorService线程池
- webvr动画函数requestAnimationFrame
- love~LBJ,奥布莱恩神杯3
- 详解 Android 性能优化
- 【杭电oj】2064 - 汉诺塔III(递归,汉诺塔)
- 模式识别(Pattern Recognition)学习笔记(三十三)-- Boosting方法之AdaBoost
- android线程管理
- 【ppt基础教程】教你用PowerPoint轻松实现板书效果
- iOS 单例对象创建
- 2016长城信息杯中国大学生程序设计竞赛中南邀请赛 xtu 1252 Defense Tower
- android HttpURLConnection网络请求数据
- Java算法 归并排序
- HDU 3518 后缀数组
- Android-扫二维码和生成二维码
- CentOS常用操作(CentOS 7X)