我有下面的代碼位:返回從回調這是坐落在一個異步任務的值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