問題は、内部メモリのディスク領域が不足しているため、書き込みが失敗することです。例外がフロアにドロップされるため、自信を持って処理できません(http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.3.3_r1/androidを参照) /app/ContextImpl.java#3169)。.commit()呼び出しはfalseを返し、それを使用して書き込みエラーを処理できますが、失敗がスペースの問題によるものなのか、それとも他の何かによるものなのかわかりません。
コミットが何で失敗したかをどうやって知ることができますか?
スタックトレース
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)