我有下面的代码位:返回从回调这是坐落在一个异步任务的值doInBackGround
这里是对doucmentation链接FO rthe asyncHttp: Link
这就是调用登录任务:
mAuthTask = new UserLoginTask();
mAuthTask.execute((Void) null);
这里是由Android模板活动提供异步任务:
public class UserLoginTask extends AsyncTask<Void, Void, Boolean> {
@Override
protected Boolean doInBackground(Void... params) {
// TODO: attempt authentication against a network service.
Network.login(mEmail, mPassword, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers,
byte[] responseBody) {
if (statusCode == 200) {
// Successfully got a response
for (int i = 0; i < headers.length; i++) {
if (headers[i].getName().equalsIgnoreCase("token")) {
// Set the token to the received value
Network.SetToken(headers[i].getValue());
// >>>>>>> return true; <<<<<<<<<
}
}
}
// >>>>> return false <<<<<<<<<<<<
}
@Override
public void onFailure(int statusCode, Header[] headers,
byte[] responseBody, Throwable error) {
// Response failed :(
// >>>>>>>>>>>>>>>>>> return false <<<<<<<<<<<<<
}
});
// TODO: register the new account here.
return true;
}
@Override
protected void onPostExecute(final Boolean success) {
mAuthTask = null;
showProgress(false);
if (success) {
finish();
} else {
mPasswordView
.setError(getString(R.string.error_incorrect_password));
mPasswordView.requestFocus();
}
}
如何从AsyncHttpResponseHandler中返回true或false,然后将该值返回到异步任务?这样它就可以成功执行它的后处理方法。
我只能想到设置变量,然后封锁它。但是那样就会使它变得异步,我宁愿远离它。
和最新何为问题? – Sanjeev
“AsyncHttpResponseHandler”不是'Network.login'异步吗? –
@ super-qua是的。但我不认为它的成功方法会在用户线程上运行吗?因为我必须在回调中更新UI,并且不允许从工作线程更新ui。 – Zapnologica