为什么Android系统会尝试序列化视图?

时间:2013-11-06 06:14:42

标签: android android-layout serialization android-fragments

我有一个自定义View,有时我会报告崩溃:

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

对于少数Fragments我已声明此视图的成员,以便更容易使用,而不必一直使用findViewById。我还尝试将成员视图声明为transient以防止此行为。

非常难以发布一些代码,因为我不知道为什么会发生这种情况,但基本架构如下:

  1. Fragment xml layout
  2. 动态创建MyCustomView FrameLayout并添加到Fragment
  3. 启动MyCustomView指针并传递给另一个View作为成员使用
  4. 此外,我自己从未遇到此崩溃,我使用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平台设备上。

0 个答案:

没有答案