問題是我的內存不足,因此寫入失敗。由於異常掉落在地板上,我無法自信地處理它(請參閱http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.3.3_r1/android/app/ContextImpl.java#3169)。 .commit()調用將返回false,我可以使用它來處理寫入錯誤,但我不知道失敗來自空間問題還是來自其他方面。SharedPreferences.commit失敗,出現java.io.IOException:設備上沒有剩餘空間
如何知道提交失敗的內容?
堆棧跟蹤
06-29 20:01:17.507: WARN/ApplicationContext(19221): writeToFile: Got exception:
java.io.IOException: No space left on device
at org.apache.harmony.luni.platform.OSFileSystem.write(Native Method)
at dalvik.system.BlockGuard$WrappedFileSystem.write(BlockGuard.java:171)
at java.io.FileOutputStream.write(FileOutputStream.java:300)
at com.android.internal.util.FastXmlSerializer.flushBytes(FastXmlSerializer.java:212)
at com.android.internal.util.FastXmlSerializer.flush(FastXmlSerializer.java:233)
at com.android.internal.util.FastXmlSerializer.endDocument(FastXmlSerializer.java:183)
at com.android.internal.util.XmlUtils.writeMapXml(XmlUtils.java:185)
at android.app.ContextImpl$SharedPreferencesImpl.writeToFile(ContextImpl.java:3191)
at android.app.ContextImpl$SharedPreferencesImpl.access$800(ContextImpl.java:2756)
at android.app.ContextImpl$SharedPreferencesImpl$1.run(ContextImpl.java:3106)
at android.app.ContextImpl$SharedPreferencesImpl.enqueueDiskWrite(ContextImpl.java:3127)
at android.app.ContextImpl$SharedPreferencesImpl.access$100(ContextImpl.java:2756)
at android.app.ContextImpl$SharedPreferencesImpl$EditorImpl.commit(ContextImpl.java:3049)
我不想釋放空間。我想知道爲什麼提交失敗,沒有解決它。由於任何設備的空間不足,該設備並不重要。你讀過關於獲取返回值是否失敗的部分嗎? – browep
因爲空間不足而導致提交失敗java.io.IOException:設備上沒有空間 所以你應該嘗試釋放一些。如果您無法寫入設備,該設備就很重要。 –
commit方法返回false,不拋出異常。上述例外情況來自日誌。閱讀我發佈的來源鏈接。該方法吞下異常並返回false。 – browep