From 6139517d75e553a1768db61c06f63a3f70a89fa7 Mon Sep 17 00:00:00 2001 From: sspanak Date: Fri, 7 Mar 2025 15:18:03 +0200 Subject: [PATCH] when shutting down, the MainView is now destroyed last, to prevent crashes; also destroyed on start, just in case --- .../java/io/github/sspanak/tt9/ime/MainViewHandler.java | 2 +- .../java/io/github/sspanak/tt9/ime/TraditionalT9.java | 6 ++++++ .../main/java/io/github/sspanak/tt9/ime/UiHandler.java | 2 ++ .../io/github/sspanak/tt9/ui/main/ResizableMainView.java | 9 +++++++-- 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/MainViewHandler.java b/app/src/main/java/io/github/sspanak/tt9/ime/MainViewHandler.java index 65db41f4..5a10365e 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/MainViewHandler.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/MainViewHandler.java @@ -57,7 +57,7 @@ abstract public class MainViewHandler extends HotkeyHandler { orientationListener = null; } if (mainView != null) { - mainView.destroy(); + mainView.stopListeners(); } } diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/TraditionalT9.java b/app/src/main/java/io/github/sspanak/tt9/ime/TraditionalT9.java index 2911ae13..ed04d795 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/TraditionalT9.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/TraditionalT9.java @@ -217,6 +217,9 @@ public class TraditionalT9 extends MainViewHandler { requestHideSelf(0); cleanUp(); stopSelf(); + if (mainView != null) { + mainView.destroy(); + } isDead = true; } @@ -238,6 +241,9 @@ public class TraditionalT9 extends MainViewHandler { isDead = true; } super.onDestroy(); + if (mainView != null) { // this run last because the MainView is used in super.onDestroy() + mainView.destroy(); + } Logger.d(LOG_TAG, "===> Shutdown completed"); } diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/UiHandler.java b/app/src/main/java/io/github/sspanak/tt9/ime/UiHandler.java index 3a1bde5d..09cb9787 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/UiHandler.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/UiHandler.java @@ -22,6 +22,8 @@ abstract class UiHandler extends AbstractHandler { if (mainView == null) { mainView = new ResizableMainView(getFinalContext()); initTray(); + } else { + mainView.destroy(); } } diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/main/ResizableMainView.java b/app/src/main/java/io/github/sspanak/tt9/ui/main/ResizableMainView.java index 883c0c00..9d929382 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ui/main/ResizableMainView.java +++ b/app/src/main/java/io/github/sspanak/tt9/ui/main/ResizableMainView.java @@ -52,11 +52,16 @@ public class ResizableMainView extends MainView implements View.OnAttachStateCha } - @Override - public void destroy() { + public void stopListeners() { if (main != null && main.getView() != null) { main.getView().removeOnAttachStateChangeListener(this); } + } + + + @Override + public void destroy() { + stopListeners(); super.destroy(); }