首页 > 代码库 > Android 异步任务 代码很简短,简单异步工具封装,方便执行异步任务
Android 异步任务 代码很简短,简单异步工具封装,方便执行异步任务
比较简单,就3个类。
1、创建一个单例的线程池,用来执行异步任务
<pre name="code" class="java">package com.ferris.pool; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class FerrisPoolManager { private ExecutorService service; private FerrisPoolManager() { int num = Runtime.getRuntime().availableProcessors(); service = Executors.newFixedThreadPool(num * 2); } private static FerrisPoolManager manager; public static FerrisPoolManager getInstance() { if (manager == null) { synchronized (FerrisPoolManager.class) { if(manager == null) { manager = new FerrisPoolManager(); } } } return manager; } public void addTask(Runnable runnable) { service.execute(runnable); } public void cancelTask(){ service.shutdown(); } }
package com.ferris.pool; public interface FerrisTaskListem { public void get(); //运行在线程里 public void update(); //运行在主线程(从哪里new就是哪个线程,也不一定是主线程service等) }
package com.ferris.pool; import android.os.Handler; import android.os.Message; public class FerrisTask { private FerrisTaskListem taskListem; private Handler handler = new Handler() { public void handleMessage(android.os.Message msg) { if(taskListem!=null){ taskListem.update(); } }; }; public FerrisTask(FerrisTaskListem taskListem) { this.taskListem = taskListem; } public void Execute(){ FerrisPoolManager.getInstance().addTask(new RunTask()); } public class RunTask implements Runnable { @Override public void run() { // TODO Auto-generated method stub if(taskListem!=null){ taskListem.get(); } Message message=Message.obtain(); handler.sendMessage(message); } } }
4、使用方法
FerrisTask ferrisTask = new FerrisTask(new FerrisTaskListem() { @Override public void update() { //主线程 // TODO Auto-generated method stub String name = Thread.currentThread().getName(); System.out.print(name); } @Override public void get() { //UI线程 // TODO Auto-generated method stub String name = Thread.currentThread().getName(); System.out.print(name); } }); ferrisTask.Execute();
Android 异步任务 代码很简短,简单异步工具封装,方便执行异步任务
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。