diff --git a/src/com/android/settings/password/ConfirmDeviceCredentialBaseActivity.java b/src/com/android/settings/password/ConfirmDeviceCredentialBaseActivity.java index 40297551152..de3ee517779 100644 --- a/src/com/android/settings/password/ConfirmDeviceCredentialBaseActivity.java +++ b/src/com/android/settings/password/ConfirmDeviceCredentialBaseActivity.java @@ -18,6 +18,8 @@ package com.android.settings.password; import android.app.KeyguardManager; import android.os.Bundle; +import android.os.Handler; +import android.os.Looper; import android.os.UserManager; import android.util.Log; import android.view.MenuItem; @@ -163,11 +165,14 @@ public abstract class ConfirmDeviceCredentialBaseActivity extends SettingsActivi @Override public void onDestroy() { super.onDestroy(); - // Force a garbage collection immediately to remove remnant of user password shards - // from memory. - System.gc(); - System.runFinalization(); - System.gc(); + // Force a garbage collection to remove remnant of user password shards from memory. + // Execute this with a slight delay to allow the activity lifecycle to complete and + // the instance to become gc-able. + new Handler(Looper.myLooper()).postDelayed(() -> { + System.gc(); + System.runFinalization(); + System.gc(); + }, 5000); } @Override diff --git a/src/com/android/settings/password/ConfirmLockPassword.java b/src/com/android/settings/password/ConfirmLockPassword.java index 0278941e797..de32f139594 100644 --- a/src/com/android/settings/password/ConfirmLockPassword.java +++ b/src/com/android/settings/password/ConfirmLockPassword.java @@ -25,6 +25,8 @@ import android.graphics.Typeface; import android.os.AsyncTask; import android.os.Bundle; import android.os.CountDownTimer; +import android.os.Handler; +import android.os.Looper; import android.os.SystemClock; import android.os.UserManager; import android.os.storage.StorageManager; @@ -216,11 +218,14 @@ public class ConfirmLockPassword extends ConfirmDeviceCredentialBaseActivity { public void onDestroy() { super.onDestroy(); mPasswordEntry.setText(null); - // Force a garbage collection immediately to remove remnant of user password shards - // from memory. - System.gc(); - System.runFinalization(); - System.gc(); + // Force a garbage collection to remove remnant of user password shards from memory. + // Execute this with a slight delay to allow the activity lifecycle to complete and + // the instance to become gc-able. + new Handler(Looper.myLooper()).postDelayed(() -> { + System.gc(); + System.runFinalization(); + System.gc(); + }, 5000); } private int getDefaultHeader() {