diff --git a/app/src/main/java/eu/faircode/email/EntityLog.java b/app/src/main/java/eu/faircode/email/EntityLog.java
index c55c4b92c8..27f3d3856f 100644
--- a/app/src/main/java/eu/faircode/email/EntityLog.java
+++ b/app/src/main/java/eu/faircode/email/EntityLog.java
@@ -21,6 +21,7 @@ package eu.faircode.email;
import android.content.Context;
import android.content.SharedPreferences;
+import android.os.Debug;
import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;
@@ -120,6 +121,13 @@ public class EntityLog {
if (!main_log)
return;
+ boolean main_log_memory = prefs.getBoolean("main_log_memory", false);
+ if (main_log_memory) {
+ long j = Log.getAvailableMb() - Log.getFreeMemMb();
+ long n = Debug.getNativeHeapSize() / 1024L / 1024L;
+ data = j + "/" + n + " " + data;
+ }
+
final EntityLog entry = new EntityLog();
entry.time = new Date().getTime();
entry.type = type;
diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java
index fa81652a52..cae9766454 100644
--- a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java
+++ b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java
@@ -146,6 +146,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
private SwitchCompat swExperiments;
private TextView tvExperimentsHint;
private SwitchCompat swMainLog;
+ private SwitchCompat swMainLogMem;
private SwitchCompat swProtocol;
private SwitchCompat swLogInfo;
private SwitchCompat swDebug;
@@ -236,7 +237,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
"language", "lt_enabled", "deepl_enabled", "vt_enabled", "vt_apikey", "send_enabled", "send_host",
"updates", "weekly", "show_changelog",
"crash_reports", "cleanup_attachments",
- "watchdog", "experiments", "main_log", "protocol", "log_level", "debug", "leak_canary",
+ "watchdog", "experiments", "main_log", "main_log_memory", "protocol", "log_level", "debug", "leak_canary",
"test1", "test2", "test3", "test4", "test5",
"work_manager", // "external_storage",
"query_threads",
@@ -347,6 +348,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
swExperiments = view.findViewById(R.id.swExperiments);
tvExperimentsHint = view.findViewById(R.id.tvExperimentsHint);
swMainLog = view.findViewById(R.id.swMainLog);
+ swMainLogMem = view.findViewById(R.id.swMainLogMem);
swProtocol = view.findViewById(R.id.swProtocol);
swLogInfo = view.findViewById(R.id.swLogInfo);
swDebug = view.findViewById(R.id.swDebug);
@@ -847,6 +849,14 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
prefs.edit().putBoolean("main_log", checked).apply();
+ swMainLogMem.setEnabled(checked);
+ }
+ });
+
+ swMainLogMem.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ @Override
+ public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
+ prefs.edit().putBoolean("main_log_memory", checked).apply();
}
});
@@ -1971,6 +1981,8 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
swWatchdog.setChecked(prefs.getBoolean("watchdog", true));
swMainLog.setChecked(prefs.getBoolean("main_log", true));
+ swMainLogMem.setChecked(prefs.getBoolean("main_log_memory", false));
+ swMainLogMem.setEnabled(swMainLog.isChecked());
swProtocol.setChecked(prefs.getBoolean("protocol", false));
swLogInfo.setChecked(prefs.getInt("log_level", Log.getDefaultLogLevel()) <= android.util.Log.INFO);
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 be2b560b26..dbdcdbe8d3 100644
--- a/app/src/main/res/layout/fragment_options_misc.xml
+++ b/app/src/main/res/layout/fragment_options_misc.xml
@@ -737,6 +737,18 @@
app:layout_constraintTop_toBottomOf="@id/tvExperimentsHint"
app:switchPadding="12dp" />
+
+
App settings
More options
Main logging
+ Log memory usage
Protocol logging
Debug logging
Debug mode