2016-07-12 1 views
0

의 onDestroy()가 호출되지 않았습니다. 일부 SharedPreferences를 초기 값으로 설정하려고합니다. 약 1 개월 전쯤에 이것이 효과가있었습니다. 따라서 사용자가 홈 버튼 옆에있는 버튼을 클릭하여 응용 프로그램을 종료하고 그것을 닫을 때 (다른 방법을 알지 못하는 경우) onDestroy()가 호출되고 값이 저장되었습니다. 앱이 완전히 닫힙니다.활동의 onDestroy() 메소드에서 앱의 하드 중지시

왜 이것이 더 이상 작동하지 않거나 해결할 수없는 이유가 있습니까?

감사합니다.

public void onDestroy() { 
    super.onDestroy(); 
    if(isFinishing()) { 
     SharedPreferences gpsPref = getSharedPreferences(getString(R.string.preferences_no_gps), Context.MODE_PRIVATE); 
     SharedPreferences.Editor editorGps = gpsPref.edit(); 
     editorGps.putString(getString(R.string.saved_no_gps), "0"); 
     editorGps.commit(); 

     SharedPreferences visibilityPref = getSharedPreferences(getString(R.string.preferences_visibility), Context.MODE_PRIVATE); 
     SharedPreferences.Editor editorVisibility = visibilityPref.edit(); 
     editorVisibility.putString(getString(R.string.saved_visibility), "123"); 
     editorVisibility.commit(); 
    } 


} 

if 절에 코드를 넣어도 아무런 차이가 없습니다.

+0

super.onDestroy() 위에 코드를 이동하려고 시도하십시오 – raxelsson

+0

"그래서 사용자가 앱을 종료 할 때"- 일반적으로 사용자는 Android에서 앱을 종료하지 않습니다. 'onDestroy()'를 호출 할 필요가 없으므로 모든 접근 방식에 결함이 있습니다. 그러나 특정 동작에 대한 자세한 내용을 보려면 "사용자가 응용 프로그램을 종료합니다"라는 의미를 자세히 설명해야합니다. – CommonsWare

+0

은 내가 무엇을 의미 하는지를 설명하려고했습니다.) – rudi

답변

0

onResume(){ 
     // below recovery code 

    } 
    onPause(){ 

      SharedPreferences gpsPref = getSharedPreferences(getString(R.string.preferences_no_gps), Context.MODE_PRIVATE); 
      SharedPreferences.Editor editorGps = gpsPref.edit(); 
      editorGps.putString(getString(R.string.saved_no_gps), "0"); 
      editorGps.commit(); 

      SharedPreferences visibilityPref = getSharedPreferences(getString(R.string.preferences_visibility), Context.MODE_PRIVATE); 
      SharedPreferences.Editor editorVisibility = visibilityPref.edit(); 
      editorVisibility.putString(getString(R.string.saved_visibility), "123"); 
      editorVisibility.commit(); 


    } 
+0

앱이 닫혀 있고 백그라운드에서 작동하지 않는 경우에만 값을 변경하고 싶습니다. – rudi

1

이를 감지 할 신뢰할 수있는 방법이 없습니다 내 생각. 활동이 끝나지 않았기 때문입니다. 살해 됐어. 이 경우 시스템은 최대한 빨리 앱을 종료하십시오. 이것을 확인하십시오 answer

+0

이렇게 수정할 방법이 없습니까? 요즘 일하는 데 익숙 했어. thats 혼란 : / – rudi