我正在使用 Android 中一个相当复杂的数据编辑活动,它在保存表单数据时大量使用捆绑对象。
一般来说,这工作得很好,我没有遇到任何数据丢失。但是我有一个奇怪的间歇性错误,我似乎无法找到直接原因。
当我向图库发送意图(使用 startActivityForResult)以使用户能够选择个人资料图像时,就会发生这种情况。捆绑包中返回了一个小的 (96x96) 位图,我将此数据保存到他们的配置文件中。这在大约 90% 的情况下完美无缺,但是在某些情况下,它不会返回保存在包中的图像,而是返回一个无法解析的包。如果我让设备处于画廊选择模式几分钟,这种情况会经常发生。(> 5 分钟的空转)。
当我尝试访问包的任何功能时,我得到以下运行时异常:
java.lang.RuntimeException: Parcel android.os.Parcel@44a06078: Unmarshalling unknown type code -8913000 at offset 392
注意事项: o 发生此错误时,似乎编辑活动已被破坏,需要重新创建。(在错误发生之前,它会通过 onCreate、onStart 和 onRestoreInstanceState(崩溃发生的地方)进行)。o 这似乎会导致它跳过“onActivityResult”部分(或至少永远不会达到那么远。o 在 onRestoreInstanceState 中检索到的捆绑对象不为空,但对该对象的任何其他访问(包括检查其是否为空)都会导致此o 通过检查包源代码,我发现崩溃似乎源于包使用存储的 int 标志执行内部类型检查。当 int 标志出现不在列表中的类型时会发生错误(所以到目前为止它一直是-8913000)。o到目前为止,我只在froyo上看到过这个错误(2.2)
有没有人遇到过类似的错误?有没有人有关于下一步看哪里的建议?
同时,我将尝试将这部分代码的精简版本放在一起,这可能是可发布的,看看是否仍然会重现问题。