我在一个活动中存储了一个共享的首选项。该偏好被存储,但是当该活动完成后返回到主活动,在该活动中我检查我存储的共享首选项,它返回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;
答案 0 :(得分:0)
https://riptutorial.com/android/example/4983/commit-vs--apply
如果此SharedPreferences上的其他编辑器在apply()仍未完成的情况下执行常规commit(),则commit()将阻塞,直到所有异步提交(应用)以及可能尚未决的任何其他同步提交完成为止