概要
AndroidX Core Splashscreenでスプラッシュ画面を作成するとAndroid 12端末で以下のようなクラッシュが発生することがあった。
Caused by java.lang.IllegalStateException You need to use a Theme.AppCompat theme (or descendant) with this activity.
不適切なタイミングでinstallSplashScreen
を呼ぶと上記のエラーが発生することがある。
対策
件のクラッシュは 開発者向けオプション
でアクティビティを保持しない
をONにしてアプリをバックグラウンドから起動すると高確率で発生する。
クラッシュの原因は installSplashScreen
を super.onCreate
の後に呼んでいたため。
MainActivity.kt
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
installSplashScreen()
...
}
installSplashScreen
は super.onCreate
の前で呼ぶとクラッシュは発生しなくなった。
MainActivity.kt
override fun onCreate(savedInstanceState: Bundle?) {
installSplashScreen()
super.onCreate(savedInstanceState)
...
}
あとがき
公式ドキュメントでは英語だとinstallSplashScreen
が先だが、日本語では onCreate
が先に書かれているので注意…
英語
日本語
参考
https://issuetracker.google.com/issues/207095795
https://developer.android.com/guide/topics/ui/splash-screen/migrate#migrate_your_splash_screen_implementation