package com.yizhao.core;
import java.util.Map;
import android.content.AsyncQueryHandler;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Looper;
import android.os.Message;
public class AsyncWorkHandler extends Handler implements AsyncWorkIF{
private static Looper sLooper = null;
private WorkerHandler mWorkerHanler ;
protected final class WorkerArgs{
Handler handler;
Map<String,String> map;
}
public AsyncWorkHandler(){
synchronized (AsyncQueryHandler.class) {
if (sLooper == null) {
HandlerThread thread = new HandlerThread("AsyncWorkHandler");
thread.start();
sLooper = thread.getLooper();
}
}
mWorkerHanler = new WorkerHandler(sLooper);
}
/**
* 获取结果并发送至消息
* @param bean
*/
public void doWork(Map<String,String> map){
Message msg = mWorkerHanler.obtainMessage();
WorkerArgs workArgs = new WorkerArgs();
workArgs.handler = this;
workArgs.map = map;
msg.obj = workArgs;
mWorkerHanler.sendMessage(msg);
}
/**
* 得到消息,需要重写
*/
@Override
public void handleMessage(Message msg){}
protected class WorkerHandler extends Handler {
public WorkerHandler(Looper looper) {
super(looper);
}
@Override
public void handleMessage(Message msg) {
WorkerArgs args = (WorkerArgs) msg.obj;
Map<String,String> quest_map = args.map;
Object obj = excute(quest_map);//调用excute方法执行某个操作
Message result = args.handler.obtainMessage();
result.obj = obj;
result.sendToTarget();//发送消息至目标
}
}
/**
* 实际执行方法
*/
@Override
public Object excute(Map<String, String> map) {
return null;
}
}