概要
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 の後に呼んでいたため。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
installSplashScreen()
...
}
installSplashScreen は super.onCreate の前で呼ぶとクラッシュは発生しなくなった。
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

