android异步请求

本文深入探讨了使用异步请求处理器来优化后台任务管理的方法,包括创建和管理工 作线程、消息传递机制以及如何在不同回调中处理请求完成情况。通过实例展示如何实 现异步请求,提升应用响应速度和用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public abstract class AsyncRequestHandler<Result> extends Handler {


private static Looper sLooper = null;


private Handler mWorkerThreadHandler;


private static final int EVENT_ARG_REQUEST = 1;


protected class WorkerHandler extends Handler {
public WorkerHandler(Looper looper) {
super(looper);
}


@Override
public void handleMessage(Message msg) {
switch (msg.arg1) {
case EVENT_ARG_REQUEST:
Result r = onSendAyncRequest(msg.what);
Handler h = (Handler) msg.obj;
Message reply = h.obtainMessage(msg.what, r);
reply.arg1 = msg.arg1;
reply.sendToTarget();
break;
default:
break;
}
}
}


public AsyncRequestHandler() {
super();
synchronized (AsyncQueryHandler.class) {
if (sLooper == null) {
HandlerThread thread = new HandlerThread("AsyncRequestWorker");
thread.start();


sLooper = thread.getLooper();
}
}
mWorkerThreadHandler = createHandler(sLooper);
}


protected Handler createHandler(Looper looper) {
return new WorkerHandler(looper);
}


public void send(int token) {
Message msg = mWorkerThreadHandler.obtainMessage(token);
msg.arg1 = EVENT_ARG_REQUEST;
msg.obj = this;
mWorkerThreadHandler.sendMessage(msg);


}


public final void cancelOperation(int token) {
mWorkerThreadHandler.removeMessages(token);
}


abstract protected void onRequestComplete(int token, Result result);


abstract protected Result onSendAyncRequest(int token);


@Override
public void handleMessage(Message msg) {


// pass token back to caller on each callback.
switch (msg.arg1) {
case EVENT_ARG_REQUEST:
int token = msg.what;
Result result = (Result) msg.obj;
onRequestComplete(token, result);
break;
default:
break;
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值