アンドロイドアプリを作っていて
android.view.InflateException: Binary XML file line #XX
というエラーでクラッシュした。しかも毎回でもなく、端末によって出たり出なかったりする。
並行してOut of Memoryも出ていた。
android.view.InflateExceptionはレイアウトxmlの読み込みエラーである。
端末Aでクラッシュし、別の端末Bではクラッシュしていなかったのでxmlの記述の仕方にミスがあるとは思えなかったが、よく見ると異なるxml間で同じIDをつけているViewがあった。これが原因の一端であった。
原因は、
メモリが足りず画面遷移時にレイアウトxmlを読み込みが極端に遅くなると、過去のActivityのxmlを引きずっているのではないか?その際に異なるxml間で同じIDをつけているとクラッシュする。
(だから平行してOut Of Memoryが出ているときにだけこのクラッシュの仕方が起きる)
と考えた。
対策
Out Of Memoryをなくそう。
全てのxmlでIDを違うものにしよう。
...へへ、なんだ当たり前のことじゃないか。