这绝对可以用AsyncTask完成…在doInBackground()中处理网络请求,一旦doInBackground()完成,在UI线程上触发onPostExecute(),你可以在那里执行任何将更新UI元素的代码.
如果你需要更通用和可重用的东西,你可能想要实现一个回调…我将把UI线程称为客户端,将AsyncTask称为服务器.
>创建一个新界面并创建一些方法存根.
public interface MyEventListener {
public void onEventCompleted();
public void onEventFailed();
}
>让您的客户端将MyEventListener的实例传递给服务器.执行此操作的典型方法是让客户端实现接口(MyEventListener)并将其自身传递给服务器.
public class MyActivity implement MyEventListener {
public void startEvent() {
new MyAsyncTask(this).execute();
}
@Override
public void onEventCompleted() {
// TODO
}
@Override
public void onEventFailed() {
// TODO
}
}
>在服务器的onPostExecute上,检查回调是否为null并调用适当的方法.
public class MyAsyncTask extends AsyncTask {
private MyEventListener callback;
public MyAsyncTask(MyEventListener cb) {
callback = cb;
}
[...]
@Override
protected void onPostExecute(Void aVoid) {
if(callback != null) {
callback.onEventCompleted();
}
}
}