From 9bd4abd48ae0eb6b4163ed7f8069ea25780e2dee Mon Sep 17 00:00:00 2001 From: M66B Date: Mon, 27 Aug 2018 08:10:18 +0000 Subject: [PATCH] Limit search result caching --- .../main/java/eu/faircode/email/SearchDataSource.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/eu/faircode/email/SearchDataSource.java b/app/src/main/java/eu/faircode/email/SearchDataSource.java index e574fcc49e..f836e3909d 100644 --- a/app/src/main/java/eu/faircode/email/SearchDataSource.java +++ b/app/src/main/java/eu/faircode/email/SearchDataSource.java @@ -48,6 +48,8 @@ public class SearchDataSource extends PositionalDataSource imple private SparseArray cache = new SparseArray<>(); + private static final float MAX_MEMORY_USAGE = 0.6f; // percent + SearchDataSource(Context context, LifecycleOwner owner, long folder, String search) { Log.i(Helper.TAG, "SDS create"); @@ -203,7 +205,12 @@ public class SearchDataSource extends PositionalDataSource imple result.messages.add(message); - cache.put(pos, message); + Runtime rt = Runtime.getRuntime(); + float used = (float) (rt.totalMemory() - rt.freeMemory()) / rt.maxMemory(); + if (used < MAX_MEMORY_USAGE) + cache.put(pos, message); + else + Log.i(Helper.TAG, "SDS memory used=" + used); } Log.i(Helper.TAG, "SDS result=" + result.messages.size());