내 안드로이드 앱에서 서버로 요청을 보내고 있습니다. loopj의 AsyncHttpClient 라이브러리를 사용하고 있습니다. 진행률 대화 상자가 취소 된 경우 (뒤로 키를 눌렀을 때) 요청을 취소하려고 시도했지만 실제로 진행되는 것은 ProgressDialog가 취소되지만 요청이 백그라운드에서 계속 작동하며 완료되면 다른 작업으로 이동합니다 (진행 대화 상자가 취소되지 않았을 때 원하는 동작이므로 괜찮습니다.) 여기진행 대화 상자가 취소 된 경우 AsyncHttpClient 요청 취소
내가해서 ProgressDialog의 setOnCancelListener을 설정 내 코드의 일부입니다 : 들어
client.cancelAllRequests(true);
님의 방법을 변경하는
public static void login(final String email, final String password,
final Context context, final Context appContext, final Resources res) {
prgDialog = new ProgressDialog(context);
prgDialog.setMessage(res.getString(R.string.dialog_please_wait));
prgDialog.setCancelable(true);
prgDialog.show();
prgDialog.setOnCancelListener(new OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
client.cancelRequests(context, true);
}
});
cookieStore = new PersistentCookieStore(appContext);
client.setCookieStore(cookieStore);
RequestParams params = new RequestParams();
params.put("user_session[email]", email);
params.put("user_session[password]", password);
client.addHeader("Accept", HEADER);
client.post(getAbsoluteUrl(LOGIN_PATH), params,
new JsonHttpResponseHandler() {
@Override
public void onFailure(int statusCode,
org.apache.http.Header[] headers,
java.lang.String responseString,
java.lang.Throwable throwable) {
prgDialog.hide();
if (statusCode == 404) {
Toast.makeText(context,
res.getString(R.string.error_404),
Toast.LENGTH_LONG).show();
} else if (statusCode == 500) {
Toast.makeText(context,
res.getString(R.string.error_500),
Toast.LENGTH_LONG).show();
} else if (statusCode == 401) {
Toast.makeText(context,
res.getString(R.string.login_401),
Toast.LENGTH_LONG).show();
} else {
Toast.makeText(
context,
"Unexpected Error occcured! [Most common Error: Device might not be connected to Internet or remote server is not up and running]",
Toast.LENGTH_LONG).show();
}
}
@Override
public void onSuccess(int statusCode, Header[] headers,
JSONObject response) {
if (statusCode == 200) {
//do something
}
});
}
이걸 알아 냈나요? – user2635088
정말로, @ user2635088 AsyncTasks 사용을 중단하기로 결정했고 이제는 모든 것이 훨씬 쉬워지는 Retrofit을 사용합니다. –