我有一个自定义View
,有时我会报告崩溃:
Caused by: java.io.NotSerializableException: com.myapp.views.MyCustomView
对于少数Fragments
我已声明此视图的成员,以便更容易使用,而不必一直使用findViewById
。我还尝试将成员视图声明为transient
以防止此行为。
非常难以发布一些代码,因为我不知道为什么会发生这种情况,但基本架构如下:
Fragment
xml layout 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平台设备上。