diff --git a/app/src/main/java/eu/faircode/email/DB.java b/app/src/main/java/eu/faircode/email/DB.java index 062dea1604..c7e3c29f0d 100644 --- a/app/src/main/java/eu/faircode/email/DB.java +++ b/app/src/main/java/eu/faircode/email/DB.java @@ -106,8 +106,6 @@ public abstract class DB extends RoomDatabase { public abstract DaoLog log(); private static DB sInstance; - private static final ExecutorService executor = - Helper.getBackgroundExecutor(2, "query"); // AndroidX default thread count: 4 private static final String DB_NAME = "fairemail"; private static final int DB_CHECKPOINT = 1000; // requery/sqlite-android default @@ -261,6 +259,11 @@ public abstract class DB extends RoomDatabase { Log.e(ex); } + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + int threads = prefs.getInt("query_threads", 4); // AndroidX default thread count: 4 + Log.i("Query threads=" + threads); + ExecutorService executor = Helper.getBackgroundExecutor(threads, "query"); + return Room .databaseBuilder(context, DB.class, DB_NAME) .openHelperFactory(new RequerySQLiteOpenHelperFactory()) diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java index e2a21f944e..b8cd353f6d 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java @@ -76,6 +76,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc private SwitchCompat swUpdates; private SwitchCompat swExperiments; private TextView tvExperimentsHint; + private SwitchCompat swQueries; private SwitchCompat swCrashReports; private TextView tvUuid; private SwitchCompat swDebug; @@ -98,7 +99,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc private final static String[] RESET_OPTIONS = new String[]{ "shortcuts", "fts", "english", "watchdog", "updates", - "experiments", "crash_reports", "debug", "auth_sasl", "cleanup_attachments" + "experiments", "query_threads", "crash_reports", "debug", "auth_sasl", "cleanup_attachments" }; private final static String[] RESET_QUESTIONS = new String[]{ @@ -131,6 +132,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc swUpdates = view.findViewById(R.id.swUpdates); swExperiments = view.findViewById(R.id.swExperiments); tvExperimentsHint = view.findViewById(R.id.tvExperimentsHint); + swQueries = view.findViewById(R.id.swQueries); swCrashReports = view.findViewById(R.id.swCrashReports); tvUuid = view.findViewById(R.id.tvUuid); swDebug = view.findViewById(R.id.swDebug); @@ -259,6 +261,14 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc } }); + swQueries.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { + prefs.edit().putInt("query_threads", checked ? 2 : 4).commit(); // apply won't work here + restart(); + } + }); + swCrashReports.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { @@ -536,6 +546,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc Helper.isPlayStoreInstall() || !Helper.hasValidFingerprint(getContext()) ? View.GONE : View.VISIBLE); swExperiments.setChecked(prefs.getBoolean("experiments", false)); + swQueries.setChecked(prefs.getInt("query_threads", 4) < 4); swCrashReports.setChecked(prefs.getBoolean("crash_reports", false)); tvUuid.setText(prefs.getString("uuid", null)); swDebug.setChecked(prefs.getBoolean("debug", false)); diff --git a/app/src/main/res/layout/fragment_options_misc.xml b/app/src/main/res/layout/fragment_options_misc.xml index 83351e8966..5ad0f1980d 100644 --- a/app/src/main/res/layout/fragment_options_misc.xml +++ b/app/src/main/res/layout/fragment_options_misc.xml @@ -183,6 +183,29 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/swExperiments" /> + + + + Automatically optimize Check for updates Try experimental features + Limit parallel database reads Send error reports Debug mode Delete attachments of old messages