结合Observable类和AsyncTask,封装一个带回调的异步任务类
jopen
9年前
bservable结合AsyncTask实现的一个带回调的异步任务
1.设计目的
该类的设计旨在省去书写异步任务时,再次添加回调的方法
2.使用
a. 直接声明使用
CommonTask<String, String> task = new CommonTask<String, String>() { @Override public String doInBackground(String params) { try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } return "参数为>>" + params + "\n休眠3秒异步任务2执行结束"; } }; // 添加回调 task.addObserver(new Observer() { public void update(Observable observable, Object data) { // 参数在这里强转成需要个类型 (String )data,(boolean)data , mText.append((CharSequence) data); mText.append("\n"); } }); // 启动任务 task.startTask("这是异步任务2");
b. 继承CommTask,根据需要,startTask时无参数时重写doInBackGround()方法,带参数则重写doInBackGround(A a)方法
CommonTask<String, String> task = new CommonTask<String, String>() { @Override public String doInBackground(String params) { try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } return "参数为>>" + params + "\n休眠3秒异步任务2执行结束"; } }; // 添加回调 task.addObserver(new Observer() { public void update(Observable observable, Object data) { // 参数在这里强转成需要个类型 (String )data,(boolean)data , mText.append((CharSequence) data); mText.append("\n"); } }); // 启动任务 task.startTask("这是异步任务2");