2013-05-21 3 views
0

Я хочу отправить информацию о выходе на сервер, когда приложение будет уничтожено.AsyncTask in onDestroy() не выполняется

Вот код:

@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(); 
} 

Но вот бревно, когда я закрываю приложение из длинного меню нажмите Главная баттона:

enter image description here

Я даже не могу отлаживать здесь. Я устанавливаю точку останова, но она не срабатывает при отладке.

Есть ли причина, почему AsyncTask не вызывается из onDestroy()?

+0

Если «step3» не зарегистрирован, исключение должно быть произошла до вашего заявления о регистрации. Отправьте код своего HttpPOSTer и полный вывод logcat. –

+1

положите ваш super.onDestroy() после последнего улова и посмотрите. – Rahil2952

+0

@WolframRittmeyer, исключение не выбрано. Написал весь логарифм, посмотри, пожалуйста. Уверяю вас, все в порядке с классом HttpPOSTer. – azizbekian

ответ

0

не очень хорошая идея использовать asyntask в OnDestroy() вместо этого вы можете иметь активность, которая проходит IntentService и дать призыв к этой деятельности от OnDestroy

+0

В чем смысл этого? Вы предлагаете начать новое намерение с onDestroy()? И что он должен делать? – azizbekian

+0

, потому что прежде чем вы получите возвращаемое значение из HttpPOSTER.logout, ваша активность будет уничтожена. IntentService выполнит задачу и покончит с собой, поэтому поместите этот код в intenservice и выложите тост на logout staus – prvn

+0

Ahh, действительно, я забыл об этом! Спасибо, я попробую сейчас. – azizbekian