2013-05-21 1 views
0

앱이 파괴되면 서버에 로그 아웃 정보를 보내려고합니다.onDestroy()의 AsyncTask가 실행되지 않음

enter image description here

내가 여기조차 디버깅 할 수 있습니다 : 나는 홈 버튼의 긴 클릭 메뉴에서 응용 프로그램을 닫을 때,

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

그러나 여기 로그입니다 :

여기에 코드입니다. 중단 점을 배치하지만 디버깅 중에 절대로 실행되지 않습니다.

AsyncTaskonDestroy()에서 호출되지 않는 이유는 무엇입니까?

+0

, 예외가 있어야합니다 대신에 당신이 IntentService를 확장하는 활동을 할 수 있습니다)들의 OnDestroy (에 asyntask 사용하고들의 OnDestroy에서 해당 활동에 전화를 해합니다 로깅 성명 이전에 발생했습니다. HttpPOSTer 코드와 전체 logcat 출력을 게시하십시오. –

+1

마지막 catch 후에 super.onDestroy()를 넣고 보자. – Rahil2952

+0

@WolframRittmeyer, 예외는 발생하지 않습니다. 게시자 전체 logcat, 제발 좀 봐. HttpPOSTer 클래스로 모든 것이 OK입니다. – azizbekian

답변

0

의 좋은 생각은 "STEP3"이 기록되어 있지 않은 경우

+0

그 점은 무엇입니까? onDestroy()에서 새로운 의도를 시작 하시겠습니까? 그리고 어떻게해야합니까? – azizbekian

+0

HttpPOSTer.logout에서 반환 값을 받기 전에 활동이 삭제되기 때문입니다. IntentService가 작업을 수행하고 자체를 종료하므로이 코드를 intentservice에 넣고 토스트에 로그 아웃 staus를 표시합니다. – prvn

+0

아, 참으로 잊었습니다! 고마워, 이제해볼 게. – azizbekian

관련 문제