用户退出应用程序时如何在共享首选项中存储值?

时间:2015-06-26 05:03:15

标签: android android-activity sharedpreferences

当用户退出我的应用程序时,如何在Sharedpreferences中存储值?

我已经尝试过这段代码,但这对我不起作用:

@Override
protected void onDestroy() {
    // TODO Auto-generated method stub
    //enter code here
    super.onDestroy();
    editor.putString("Check_activity", "true");
    editor.commit();
}  

2 个答案:

答案 0 :(得分:2)

请注意,onStop()onDestroy()通常是可以播放的。在该方法返回之后,托管活动的进程可能在任何时候被系统杀死而不执行其代码的另一行。因此,您应该使用onPause()方法将任何持久性数据(例如用户编辑)写入存储。

此外,在将活动置于这样的背景状态之前调用方法onSaveInstanceState(Bundle),允许您将活动中的任何动态实例状态保存到给定的Bundle中,以便稍后在{{1如果需要重新创建活动。

例如,请考虑以下应用程序代码段:

onCreate(Bundle)

答案 1 :(得分:1)

以下示例在计算器中保存了对静音按键模式的偏好:

public class Calc extends Activity {
    public static final String PREFS_NAME = "MyPrefsFile";

    @Override
    protected void onCreate(Bundle state){
       super.onCreate(state);
       . . .

       // Restore preferences
       SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
       boolean silent = settings.getBoolean("silentMode", false);
       setSilent(silent);
    }

    @Override
    protected void onStop(){
       super.onStop();

      // We need an Editor object to make preference changes.
      // All objects are from android.context.Context
      SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
      SharedPreferences.Editor editor = settings.edit();
      editor.putBoolean("silentMode", mSilentMode);

      // Commit the edits!
      editor.commit();
    }
}