私にはカスタムがViewあり、時々クラッシュが報告されます:
Caused by: java.io.NotSerializableException: com.myapp.views.MyCustomView
Fragments常に使用する必要がなく、簡単に使用できるように、このビューのメンバーを宣言した人はほとんどいませんfindViewById。transientまた、この動作を防ぐためにメンバー ビューを宣言しようとしました。
なぜこれが起こっているのかわからないので、いくつかのコードを投稿するのは非常に困難ですが、基本的なアーキテクチャは次のとおりです。
Fragmentxml レイアウトでMyCustomViewwhich を動的に作成し、それFrameLayoutに追加するFragmentMyCustomViewポインターを開始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 プラットフォーム デバイスでのみ発生するようです。