应用程序的硬停止时不会调用onDestroy()

时间:2016-07-12 16:17:04

标签: android ondestroy android-sharedpreferences

在活动的onDestroy()方法中我想将一些SharedPreferences设置为初始值。大约一个月前左右这个工作。因此,当用户通过单击主页按钮旁边的按钮关闭应用程序并关闭它(不知道如何描述它)时,调用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子句中,它就没有区别了。

2 个答案:

答案 0 :(得分:1)

没有可靠的方法来检测它。因为活动没有完成。它被杀了。在这种情况下,系统尝试尽快终止应用程序。请检查此answer

答案 1 :(得分: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();


    }