diff --git a/splash-screen/android/src/main/java/com/capacitorjs/plugins/splashscreen/SplashScreen.java b/splash-screen/android/src/main/java/com/capacitorjs/plugins/splashscreen/SplashScreen.java index 756a2d6d5..bab33f8f1 100644 --- a/splash-screen/android/src/main/java/com/capacitorjs/plugins/splashscreen/SplashScreen.java +++ b/splash-screen/android/src/main/java/com/capacitorjs/plugins/splashscreen/SplashScreen.java @@ -538,11 +538,15 @@ private void hide(final int fadeOutDuration, boolean isLaunchSplash) { ); } this.isVisible = false; - if (null != content) { - content.getViewTreeObserver().removeOnPreDrawListener(this.onPreDrawListener); + final View hideContent = content; + final OnPreDrawListener listenerToRemove = this.onPreDrawListener; + if (null != hideContent) { + new Handler(context.getMainLooper()) + .post(() -> hideContent.getViewTreeObserver().removeOnPreDrawListener(listenerToRemove)); } this.onPreDrawListener = null; return; + } if (splashImage == null || splashImage.getParent() == null) { @@ -608,8 +612,11 @@ private void hideDialog(final AppCompatActivity activity, boolean isLaunchSplash // Hide with Android 12 API if (null != this.onPreDrawListener) { this.isVisible = false; - if (null != content) { - content.getViewTreeObserver().removeOnPreDrawListener(this.onPreDrawListener); + final View hideContent = content; + final OnPreDrawListener listenerToRemove = this.onPreDrawListener; + if (null != hideContent) { + new Handler(context.getMainLooper()) + .post(() -> hideContent.getViewTreeObserver().removeOnPreDrawListener(listenerToRemove)); } this.onPreDrawListener = null; return;