From d1eed0fbd57a2adf7989bc0359efb472750d594d Mon Sep 17 00:00:00 2001 From: aliveoutside <53598473+aliveoutside@users.noreply.github.com> Date: Fri, 16 Sep 2022 23:01:31 +0300 Subject: [PATCH] do not reapply theme on every config change --- .../vtosters/lite/hooks/ui/SystemThemeChangerHook.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/ru/vtosters/lite/hooks/ui/SystemThemeChangerHook.java b/app/src/main/java/ru/vtosters/lite/hooks/ui/SystemThemeChangerHook.java index 1840860b6..bf55b36e4 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/ui/SystemThemeChangerHook.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/ui/SystemThemeChangerHook.java @@ -6,17 +6,24 @@ import ru.vtosters.lite.utils.Preferences; import ru.vtosters.lite.utils.ThemesUtils; public class SystemThemeChangerHook { + private static int latestTheme = 0; + public static void onThemeChanged(Configuration configuration) { if (Preferences.systemtheme()) { - switch (configuration.uiMode & Configuration.UI_MODE_NIGHT_MASK) { + var theme = configuration.uiMode & Configuration.UI_MODE_NIGHT_MASK; + if (theme == latestTheme) return; + + switch (theme) { case Configuration.UI_MODE_NIGHT_YES: // Night mode is active, we're using dark theme ThemesUtils.applyTheme(ThemesUtils.getDarkTheme()); + latestTheme = theme; break; case Configuration.UI_MODE_NIGHT_NO: case Configuration.UI_MODE_NIGHT_UNDEFINED: // Night mode is not active, we're using light theme ThemesUtils.applyTheme(ThemesUtils.getLightTheme()); + latestTheme = theme; break; } }