如果您使用apply,那么在单独的线程中编辑共享首选项是否是多余的?
我在MainActivity的onCreate方法中有以下代码块:
final MainActivity activityReference = this;
Executors.newSingleThreadExecutor().execute(new Runnable() {
@Override
public void run() {
// if it is the first time running
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(activityReference);
if(!prefs.getBoolean(MainActivity.FIRST_LOAD, false)) {
// enable a setting on first run
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean(MainActivity.FIRST_LOAD, true);
editor.apply();
}
}
});
由于SharedPreferences.Editor实例调用apply方法,因此它应该是异步的,但在运行在单独的线程之前,我们仍然出现了Strict Mode违规。这些违规是StrictModeDiskRead违规,因此假设它们是由获取SharedPreferences而不是调用apply引起的。此外,似乎三星设备几乎完全存在此问题。