commit()和apply()方法之间的区别,但是我已经注意到commit()会返回true如果新值成功写入持久性存储而apply()则不会。
那么,是什么原因导致commit()方法返回false或者apply()方法失败呢?
commit()和apply()方法之间的区别,但是我已经注意到commit()会返回true如果新值成功写入持久性存储而apply()则不会。
那么,是什么原因导致commit()方法返回false或者apply()方法失败呢?
让我们来看一下commit()的源代码:
public boolean commit() {
MemoryCommitResult mcr = commitToMemory();
SharedPreferencesImpl.this.enqueueDiskWrite(
mcr, null /* sync write on this thread okay */);
try {
mcr.writtenToDiskLatch.await();
} catch (InterruptedException e) {
return false;
}
notifyListeners(mcr);
return mcr.writeToDiskResult;
}
换句话说,如果线程在等待磁盘写入完成时被中断,或者由于某些原因(最可能是磁盘已满)导致磁盘写入失败,则commit()将返回false。