3

私にはカスタムがViewあり、時々クラッシュが報告されます:

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

Fragments常に使用する必要がなく、簡単に使用できるように、このビューのメンバーを宣言した人はほとんどいませんfindViewByIdtransientまた、この動作を防ぐためにメンバー ビューを宣言しようとしました。

なぜこれが起こっているのかわからないので、いくつかのコードを投稿するのは非常に困難ですが、基本的なアーキテクチャは次のとおりです。

  1. Fragmentxml レイアウトで
  2. MyCustomViewwhich を動的に作成し、それFrameLayoutに追加するFragment
  3. MyCustomViewポインターを開始Viewし、使用のためにメンバーとして別のメンバーに渡す

BugSenseまた、クラッシュ ライブラリを使用してクラッシュ レポートを取得しています。

更新: どういうわけか、これは を実装する私の 1 つのデータ クラスに接続されていますSerializable。パッケージを逆コンパイルすると、クラッシュ トレースも実際にはデータ クラスであることが示されます。

java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.myapp.f.y)

そしてMyCustomView、そのオブジェクトのメンバーを持っています。したがって、Serializableオブジェクトはシリアル化されており、どういうわけMyCustomViewかそれ自体もシリアル化しようとしていますか?

アップデート:

1 日平均 2,000 人のユーザーのクラッシュ数は、1 日あたり約 10 件です。ホームが押されたときのトレース:

android.app.ActivityThread.handlePauseActivity(ActivityThread.java:2302)

システムがシリアル化を試みますが、一部の操作またはアニメーションがまだ進行中であり、システムがシリアル化しようとしているというスレッドの問題が発生している可能性がありますかView?

アップデート:

これは、2.x プラットフォーム デバイスでのみ発生するようです。

4

0 に答える 0