Fix 5466793: Fix memory leak in system process when face lock is enabled.
Previously, the code was not unregistering the callback when we unlocked the device, which kept a reference to LockPatternKeyguardView indirectly by a reference to mFaceLockCallback. It now correcly removes the callback when we unlock the device. Change-Id: Ie592d007a1dfc2416b9e8956aba2c34e3d0120ee
This commit is contained in:
@@ -23,4 +23,5 @@ interface IFaceLockInterface {
|
||||
void startUi(IBinder containingWindowToken, int x, int y, int width, int height);
|
||||
void stopUi();
|
||||
void registerCallback(IFaceLockCallback cb);
|
||||
void unregisterCallback(IFaceLockCallback cb);
|
||||
}
|
||||
|
||||
@@ -782,6 +782,15 @@ public class LockPatternKeyguardView extends KeyguardViewBase implements Handler
|
||||
mUnlockScreen = null;
|
||||
}
|
||||
mUpdateMonitor.removeCallback(this);
|
||||
if (mFaceLockService != null) {
|
||||
try {
|
||||
mFaceLockService.unregisterCallback(mFaceLockCallback);
|
||||
} catch (RemoteException e) {
|
||||
// Not much we can do
|
||||
}
|
||||
stopFaceLock();
|
||||
mFaceLockService = null;
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isSecure() {
|
||||
@@ -1206,6 +1215,13 @@ public class LockPatternKeyguardView extends KeyguardViewBase implements Handler
|
||||
|
||||
if (mBoundToFaceLockService) {
|
||||
if (DEBUG) Log.d(TAG, "before unbind from FaceLock service");
|
||||
if (mFaceLockService != null) {
|
||||
try {
|
||||
mFaceLockService.unregisterCallback(mFaceLockCallback);
|
||||
} catch (RemoteException e) {
|
||||
// Not much we can do
|
||||
}
|
||||
}
|
||||
mContext.unbindService(mFaceLockConnection);
|
||||
if (DEBUG) Log.d(TAG, "after unbind from FaceLock service");
|
||||
mBoundToFaceLockService = false;
|
||||
|
||||
Reference in New Issue
Block a user