通过阅读源码知道,当apply()和commit()执行了commitToMemory()时,mDiskWritesInFlight会加1,代表写入内存的数据数量加1,当每次创建一个writeToDiskRunnable时,mDiskWritesInFlight会减1。 因此mDiskWritesInFlight为1就代表前面的提交到内存的修改都已经提交的磁盘上了。此时如果是来自commit,写磁盘任务就直接在当前线程即主线程里执行了,对应[注释30]。然而如果此时是来自commit,但mDiskWritesInFlight不等于1,则执行[注释31]和 apply 一样添加到 QueueWork 里,其实就是异步执行了。 这句话是不是前后矛盾了