共享首选项仅在应用重启后才会更新

时间:2019-01-31 07:48:04

标签: android sharedpreferences

我在一个活动中存储了一个共享的首选项。该偏好被存储,但是当该活动完成后返回到主活动,在该活动中我检查我存储的共享首选项,它返回false(无共享首选项)。我重新启动了我的应用程序,在其声明的位置检查了相同的共享首选项,它具有一些值。 简而言之,共享首选项值仅在应用重启后才会更新。

Main Activity(Calling Settings Activity):
 Intent intent = new Intent(Voiceanswer.this, SettingsActivity.class);
 startActivityForResult(intent, 108);


Settings Activity:(onCreate)
SharedPreferences.Editor editor=getSharedPreferences("trial",MODE_PRIVATE).edit();
    editor.putBoolean("flag",false);
    boolean trialflag=editor.commit();

完成设置活动:

SettingsActivity.this.finish();

主要活动(恢复)

SharedPreferences voiceTemp=getSharedPreferences("trial",MODE_PRIVATE);

       if(voiceTemp.contains("flag"))
            Log.d(TAG, "Contains key flag");

      boolean trialflag=voiceTemp.getBoolean("flag",true);

在应用重启之前,在设置活动完成之后:

voiceTemp.contains("flag") returns false.
trialflag=true;

应用重启后:

voiceTemp.contains("flag") returns true.
trialflag=false;

1 个答案:

答案 0 :(得分:0)

https://riptutorial.com/android/example/4983/commit-vs--apply

如果此SharedPreferences上的其他编辑器在apply()仍未完成的情况下执行常规commit(),则commit()将阻塞,直到所有异步提交(应用)以及可能尚未决的任何其他同步提交完成为止