3

我有一个习惯View,有时我会收到以下报告的崩溃:

Caused by: java.io.NotSerializableException: com.myapp.views.MyCustomView

对于少数人来说Fragments,我已经声明了这个视图的一个成员,以便更容易使用,而不必一直使用findViewById。我还尝试声明成员视图transient以防止这种行为。

很难发布一些代码,因为我不知道为什么会这样,但基本架构如下:

  1. Fragment带xml布局
  2. 创建MyCustomView哪个是FrameLayout动态的并添加到那个Fragment
  3. 启动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 平台设备上。

4

0 回答 0