我想在應用程序被銷燬時將註銷信息發送到服務器。onDestroy()中的AsyncTask未被執行
下面的代碼:
@Override
protected void onDestroy() {
try {
Log.i("myApp", "Activity destroyed");
SharedPreferences prefs1 = getSharedPreferences("com.my.app", Context.MODE_PRIVATE);
Log.i("myApp", "step1");
String response;
Log.i("myApp", "step2");
response = HttpPOSTer.logout(EventCodes.LOGOUT, LOGOUT_EVENTCODE, prefs.getString("sessionID", "null"));
Log.i("myApp", "step3");
if (response.equals("logout")) {
Log.i("myApp", "logged out succesfully");
} else {
Log.i("myApp", "couldn't perform logout");
}
prefs1.edit().clear().commit();
}
catch (InterruptedException e) {
e.printStackTrace();
}
catch (ExecutionException e) {
e.printStackTrace();
}
super.onDestroy();
}
但這裏的日誌,當我關閉從家裏按鈕的長按菜單中的應用:
我甚至無法調試這裏。我放置斷點,但它在調試時不會被解僱。
是否有任何理由,爲什麼AsyncTask
不會從onDestroy()
調用?
如果「第三步」不記錄,異常必須有發生在您的日誌記錄之前。請發佈您的HttpPOSTer的代碼和完整的logcat輸出。 –
把你的super.onDestroy()放在最後一個catch之後並且看到它。 – Rahil2952
@WolframRittmeyer,拋出異常。發佈整個logcat,請看看。我向你保證,HttpPOSTer類一切正常。 – azizbekian