diff --git a/app/src/main/java/eu/faircode/email/ContactInfo.java b/app/src/main/java/eu/faircode/email/ContactInfo.java index 11acabd87d..23033ee7b0 100644 --- a/app/src/main/java/eu/faircode/email/ContactInfo.java +++ b/app/src/main/java/eu/faircode/email/ContactInfo.java @@ -1038,6 +1038,12 @@ public class ContactInfo { return all; } + static int[] getStats() { + synchronized (emailContactInfo) { + return new int[]{emailLookup.size(), emailContactInfo.size()}; + } + } + private static class Lookup { Uri uri; String displayName; diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java index 79ecb728ae..36bb84103a 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java @@ -178,6 +178,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc private TextView tvMemoryClass; private TextView tvMemoryUsage; private TextView tvStorageUsage; + private TextView tvContactInfo; private TextView tvSuffixes; private TextView tvAndroidId; private TextView tvFingerprint; @@ -343,6 +344,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc tvMemoryClass = view.findViewById(R.id.tvMemoryClass); tvMemoryUsage = view.findViewById(R.id.tvMemoryUsage); tvStorageUsage = view.findViewById(R.id.tvStorageUsage); + tvContactInfo = view.findViewById(R.id.tvContactInfo); tvSuffixes = view.findViewById(R.id.tvSuffixes); tvAndroidId = view.findViewById(R.id.tvAndroidId); tvFingerprint = view.findViewById(R.id.tvFingerprint); @@ -1481,6 +1483,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); + setContactInfo(); setSuffixes(); setPermissionInfo(); } @@ -1826,6 +1829,11 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc time < 0 ? "-" : DTF.format(time))); } + private void setContactInfo() { + int[] stats = ContactInfo.getStats(); + tvContactInfo.setText(getString(R.string.title_advanced_contact_info, stats[0], stats[1])); + } + private void setSuffixes() { new SimpleTask() { @Override diff --git a/app/src/main/java/eu/faircode/email/Log.java b/app/src/main/java/eu/faircode/email/Log.java index 75849d18c3..61aa9c84a3 100644 --- a/app/src/main/java/eu/faircode/email/Log.java +++ b/app/src/main/java/eu/faircode/email/Log.java @@ -1887,6 +1887,10 @@ public class Log { sb.append("\r\n"); + int[] contacts = ContactInfo.getStats(); + sb.append(String.format("Contact lookup: %d cached: %s\r\n", + contacts[0], contacts[1])); + Locale slocale = Resources.getSystem().getConfiguration().locale; String language = prefs.getString("language", null); sb.append(String.format("Locale: def=%s sys=%s lang=%s\r\n", diff --git a/app/src/main/res/layout/fragment_options_misc.xml b/app/src/main/res/layout/fragment_options_misc.xml index c8ab8b92ac..4be6aec822 100644 --- a/app/src/main/res/layout/fragment_options_misc.xml +++ b/app/src/main/res/layout/fragment_options_misc.xml @@ -1453,6 +1453,17 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/tvStorageUsage" /> + + + app:layout_constraintTop_toBottomOf="@id/tvContactInfo" /> Memory usage: %1$s/%2$s Native: %3$s Storage space: %1$s/%2$s App: %3$s Cursor window size: %1$s + Contact lookup: %1$d cached: %2$d Public suffix list: %1$d Android ID: %1$s GC