From debf05db0fb6dc50a449fde9097707747e39e985 Mon Sep 17 00:00:00 2001 From: M66B Date: Sun, 1 May 2022 16:30:40 +0200 Subject: [PATCH] Optimize getting theme ID --- .../java/eu/faircode/email/ActivityBase.java | 8 +++++++- .../faircode/email/FragmentDialogTheme.java | 2 +- .../java/eu/faircode/email/SimpleTask.java | 19 +++++++++++++------ 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/ActivityBase.java b/app/src/main/java/eu/faircode/email/ActivityBase.java index 55b1c98752..c9c5af844e 100644 --- a/app/src/main/java/eu/faircode/email/ActivityBase.java +++ b/app/src/main/java/eu/faircode/email/ActivityBase.java @@ -71,6 +71,7 @@ import java.util.List; import java.util.Map; abstract class ActivityBase extends AppCompatActivity implements SharedPreferences.OnSharedPreferenceChangeListener { + private int themeId; private Context originalContext; private boolean visible; private boolean contacts; @@ -107,7 +108,8 @@ abstract class ActivityBase extends AppCompatActivity implements SharedPreferenc getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE); if (!this.getClass().equals(ActivityMain.class)) { - setTheme(FragmentDialogTheme.getTheme(this)); + themeId = FragmentDialogTheme.getTheme(this); + setTheme(themeId); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { boolean dark = Helper.isDarkTheme(this); @@ -379,6 +381,10 @@ abstract class ActivityBase extends AppCompatActivity implements SharedPreferenc } } + public int getThemeId() { + return this.themeId; + } + public String getRequestKey() { return this.getClass().getName() + ":activity"; } diff --git a/app/src/main/java/eu/faircode/email/FragmentDialogTheme.java b/app/src/main/java/eu/faircode/email/FragmentDialogTheme.java index 6f52a3bdfe..52414b1d3a 100644 --- a/app/src/main/java/eu/faircode/email/FragmentDialogTheme.java +++ b/app/src/main/java/eu/faircode/email/FragmentDialogTheme.java @@ -344,7 +344,7 @@ public class FragmentDialogTheme extends FragmentDialogBase { boolean light = (composer_light && context instanceof ActivityCompose); if (light) night = false; - Log.i("Activity theme=" + theme + " light=" + light + " night=" + night); + EntityLog.log(context, "Activity theme=" + theme + " light=" + light + " night=" + night); switch (theme) { // Light diff --git a/app/src/main/java/eu/faircode/email/SimpleTask.java b/app/src/main/java/eu/faircode/email/SimpleTask.java index bc8b80232f..444355c01b 100644 --- a/app/src/main/java/eu/faircode/email/SimpleTask.java +++ b/app/src/main/java/eu/faircode/email/SimpleTask.java @@ -159,11 +159,18 @@ public abstract class SimpleTask implements LifecycleObserver { } }; - int themeId = FragmentDialogTheme.getTheme(context); - if (themedContext == null || SimpleTask.themeId != themeId) { - SimpleTask.themeId = themeId; - themedContext = new ContextThemeWrapper(context.getApplicationContext(), themeId); - } + Context tcontext; + if (context instanceof ActivityBase) { + int themeId = ((ActivityBase) context).getThemeId(); + if (themeId == 0) + themeId = context.getApplicationInfo().theme; + if (SimpleTask.themedContext == null || SimpleTask.themeId != themeId) { + SimpleTask.themeId = themeId; + SimpleTask.themedContext = new ContextThemeWrapper(context.getApplicationContext(), themeId); + } + tcontext = SimpleTask.themedContext; + } else + tcontext = context.getApplicationContext(); future = getExecutor(context).submit(new Runnable() { private Object data; @@ -179,7 +186,7 @@ public abstract class SimpleTask implements LifecycleObserver { if (log) Log.i("Executing task=" + name); long start = new Date().getTime(); - data = onExecute(themedContext, args); + data = onExecute(tcontext, args); elapsed = new Date().getTime() - start; if (log) Log.i("Executed task=" + name + " elapsed=" + elapsed + " ms");