结果从 传递doInBag()
到 的onPostexecute()
方法AsyncTask
。
现在您可以使用处理程序将数据发送回您的活动,如下所示:
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
if (mProgressDialog != null) {
if (mProgressDialog.isShowing()) {
mProgressDialog.dismiss();
}
}
final Message message = new Message();
if (result != null && !result.equals("")) {
if (result.equals("success")) {
message.what = 1000; // to show SUCCESS
} else {
message.what = 1001; // to show FAILURE
}
} else {
message.what = 1001; // to show FAILURE
}
mHandler.sendMessage(message);
}
编辑:使用带有 AsyncTask 的处理程序:
在您的活动中声明一个处理程序,如下所示:
/**
* Handler to update the UI.
*/
private static final Handler sHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == 1000) {
} else {
// failure
}
}
};
现在在您的活动中,像这样调用 AsyncTask:
YourAsyncTask obj = new YourAsyncTask(context, sHandler);
obj.execute();
现在在您的 AsyncTask 中,创建一个像这样的构造函数:
public YourAsyncTask(final Context context, final Handler handler) {
this.context = context;
mHandler = handler;
}
说明:
为什么要在这里使用处理程序,因为您可能希望在完成后台操作后返回到您的活动,以根据 AsyncTask 结果执行其他任务。在这里,您将 Handler 的引用传递给您的 asyncTask,并最终将结果发送回您的活动。
请注意,上面的 Handler 是一个静态处理程序,否则如果您的活动在异步操作完成之前完成,可能会发生内存泄漏。