From 613977c6f9f01b437b4a2ba7cb4ceb76688fbfa8 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Sun, 19 Feb 2017 17:29:00 -0500 Subject: [PATCH] updates to manual GC --- src/Android/AutofillService.cs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/Android/AutofillService.cs b/src/Android/AutofillService.cs index 3076a68db..f4a88bc4a 100644 --- a/src/Android/AutofillService.cs +++ b/src/Android/AutofillService.cs @@ -51,6 +51,9 @@ namespace Bit.Android new Browser("com.ksmobile.cb", "address_bar_edit_text") }.ToDictionary(n => n.PackageName); + private long _lastGc = 0; + private int _eventCounter = 0; + public override void OnAccessibilityEvent(AccessibilityEvent e) { var root = RootInActiveWindow; @@ -88,7 +91,9 @@ namespace Bit.Android var allEditTexts = GetWindowNodes(root, e, n => EditText(n)); var usernameEditText = allEditTexts.TakeWhile(n => !n.Password).LastOrDefault(); FillCredentials(usernameEditText, passwordNodes); + allEditTexts = null; + usernameEditText = null; } else { @@ -111,7 +116,16 @@ namespace Bit.Android } root = null; - GC.Collect(0); + + // Do some manual GCing + _eventCounter++; + var now = Java.Lang.JavaSystem.CurrentTimeMillis(); + if((now - _lastGc) > 60000 && _eventCounter >= 20) + { + GC.Collect(0); + _lastGc = now; + _eventCounter = 0; + } } public override void OnInterrupt()