From 3de435d905d4b94714fe858cdb891f8a5e7e9634 Mon Sep 17 00:00:00 2001 From: juwei Date: Thu, 22 Dec 2016 09:53:41 +0800 Subject: SnapdragonCamera: Fix crash during UI stress test CaptureModule and CaptureUI have register listeners in SettingsManager, but forget unregiseter when UI destroy. This makes the too many RenderNode objects exist and never GC. At last, the weak reference of RenderNode at native layer exceed the 51200 limitation and crash. Unregister the listener of SettingsManager will fix it. Change-Id: I2aca795c813177fd34ed18e88f5c9b929a749bff CRs-Fixed: 1103907 --- src/com/android/camera/CameraActivity.java | 3 +++ src/com/android/camera/CaptureModule.java | 5 +++++ src/com/android/camera/SettingsManager.java | 4 ++++ 3 files changed, 12 insertions(+) mode change 100755 => 100644 src/com/android/camera/CaptureModule.java diff --git a/src/com/android/camera/CameraActivity.java b/src/com/android/camera/CameraActivity.java index 045e771cd..acbf0483a 100644 --- a/src/com/android/camera/CameraActivity.java +++ b/src/com/android/camera/CameraActivity.java @@ -1831,6 +1831,9 @@ public class CameraActivity extends Activity mCursor.close(); mCursor=null; } + if (mCaptureModule != null){ + mCaptureModule.unRegisterSettingsListener(); + } if (mDataAdapter != null) { mDataAdapter.stopLoading(); } diff --git a/src/com/android/camera/CaptureModule.java b/src/com/android/camera/CaptureModule.java old mode 100755 new mode 100644 index 041e19b74..b6968f6f9 --- a/src/com/android/camera/CaptureModule.java +++ b/src/com/android/camera/CaptureModule.java @@ -640,6 +640,11 @@ public class CaptureModule extends BaseModule implements PhotoControl } } + public void unRegisterSettingsListener(){ + mSettingsManager.unregisterListener(this); + mSettingsManager.unregisterListener(mUI); + } + public void startFaceDetection() { mUI.onStartFaceDetection(mDisplayOrientation, mSettingsManager.isFacingFront(getMainCameraId()), diff --git a/src/com/android/camera/SettingsManager.java b/src/com/android/camera/SettingsManager.java index 263575cb7..c242224c7 100644 --- a/src/com/android/camera/SettingsManager.java +++ b/src/com/android/camera/SettingsManager.java @@ -379,6 +379,10 @@ public class SettingsManager implements ListMenu.SettingsListener { mListeners.add(listener); } + public void unregisterListener(Listener listener) { + mListeners.remove(listener); + } + private void notifyListeners(List changes) { for (Listener listener : mListeners) { listener.onSettingsChanged(changes); -- cgit v1.2.3