前人未踏の領域へ Androidアプリ開発編

Androidアプリ開発に関する調査メモ置き場。古い記事にはアプリ以外も含まれます。

IllegalStateExceptionが増えた件

内容

最近リリースしたアプリのFirebase Crashlyticsをみると IllegalStateException が妙に増加していた。

メッセージをみると

XXXFragment not associated with a fragment manager が書いてあるんだけど、 なんでこのタイミングで起こるの?という感じの箇所が多い。

onActivityResultがduplicatedになったのを修正した関係で発生しているのだろうか。

もぐら叩き的に都度対応するでもいいんだけど、ライブラリ側の問題な気も。

その他requiredContextやrequiredActivityでの not attached to activity も多い。 事前にLifecycle.Stateをチェックしないといけないんじゃnullチェックしてた頃とあんまり変わらなくなっちゃうな。

原因と対応

特定の更新系のAPI呼び出しをFragmentの lifecycleScope.launch で起動していたのが主な原因だったようだ。 lifecycleScope.launchだとFragmentのライフサイクルスコープになるため、Fragment自体がdestroyされるまでライフサイクルが終わらない。 そこで、スコープを viewLifecycleOwner.lifecycleScope.launch に変更することで、destroyViewが呼ばれるまでをライフサイクルとして 処理することでエラーが解消されるはず。