diff --git a/app/src/main/java/eu/faircode/email/ApplicationEx.java b/app/src/main/java/eu/faircode/email/ApplicationEx.java index 26f655e1d2..43da067dd4 100644 --- a/app/src/main/java/eu/faircode/email/ApplicationEx.java +++ b/app/src/main/java/eu/faircode/email/ApplicationEx.java @@ -229,6 +229,7 @@ public class ApplicationEx extends Application { public boolean run(@NonNull Error error) { error.addToTab("extra", "installer", installer == null ? "-" : installer); error.addToTab("extra", "fingerprint", fingerprint); + error.addToTab("extra", "free", Helper.getFreeMemMb()); return true; } }); diff --git a/app/src/main/java/eu/faircode/email/Helper.java b/app/src/main/java/eu/faircode/email/Helper.java index 1cc490f3b4..ad5b61dcd1 100644 --- a/app/src/main/java/eu/faircode/email/Helper.java +++ b/app/src/main/java/eu/faircode/email/Helper.java @@ -614,4 +614,15 @@ public class Helper { bundle.writeToParcel(p, 0); return p.dataSize(); } + + static long getFreeMem() { + Runtime rt = Runtime.getRuntime(); + long used = (rt.totalMemory() - rt.freeMemory()); + long max = rt.maxMemory(); + return (max - used); + } + + static int getFreeMemMb() { + return (int) (getFreeMem() / 1024L / 1024L); + } } diff --git a/app/src/main/java/eu/faircode/email/ViewModelMessages.java b/app/src/main/java/eu/faircode/email/ViewModelMessages.java index e0bb36f3cb..6f536b9fbd 100644 --- a/app/src/main/java/eu/faircode/email/ViewModelMessages.java +++ b/app/src/main/java/eu/faircode/email/ViewModelMessages.java @@ -152,21 +152,17 @@ public class ViewModelMessages extends ViewModel { owner.getLifecycle().addObserver(new LifecycleObserver() { @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY) public void onDestroyed() { - Log.i("Destroy model " + viewType); - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); boolean cache = prefs.getBoolean("cache_lists", true); - Runtime rt = Runtime.getRuntime(); - long used = (rt.totalMemory() - rt.freeMemory()); - long max = rt.maxMemory(); - long free_mb = (max - used) / 1024L / 1024L; - + int free_mb = Helper.getFreeMemMb(); boolean lowmem = (free_mb < LOW_MEM_MB); + Log.i("Destroy model " + viewType + + " cache=" + cache + " lowmem=" + lowmem + " free=" + free_mb + " MB"); + if (viewType == AdapterMessage.ViewType.THREAD || !cache || lowmem) { - Log.i("Remove model " + viewType + - " cache=" + cache + " lowmem=" + lowmem + " free=" + free_mb + " MB"); + Log.i("Remove model " + viewType); remove(viewType); }