我有一个习惯View
,有时我会收到以下报告的崩溃:
Caused by: java.io.NotSerializableException: com.myapp.views.MyCustomView
对于少数人来说Fragments
,我已经声明了这个视图的一个成员,以便更容易使用,而不必一直使用findViewById
。我还尝试声明成员视图transient
以防止这种行为。
很难发布一些代码,因为我不知道为什么会这样,但基本架构如下:
Fragment
带xml布局- 创建
MyCustomView
哪个是FrameLayout
动态的并添加到那个Fragment
- 启动
MyCustomView
指针并作为成员传递给另一个View
以供使用
我自己也从来没有遇到过这种崩溃,我使用BugSense
崩溃库获得了崩溃报告。
更新:不知何故,这连接到我的一个数据类,它实现了Serializable
. 我反编译了包,崩溃跟踪也显示实际上是一个数据类:
java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.myapp.f.y)
并MyCustomView
拥有该对象的成员。所以Serializable
对象正在被序列化并且以某种方式MyCustomView
也试图序列化自己?
更新:
平均每天 2k 用户的崩溃计数约为每天 10 次。跟踪显示按下主页时:
android.app.ActivityThread.handlePauseActivity(ActivityThread.java:2302)
系统尝试序列化,是否存在一些线程问题,某些操作或动画仍在进行中,导致系统尝试序列化View
?
更新:
这似乎只发生在 2.x 平台设备上。