diff options
| author | Jean-Baptiste Queru <jbq@google.com> | 2012-08-10 09:04:05 -0700 |
|---|---|---|
| committer | android code review <noreply-gerritcodereview@google.com> | 2012-08-10 09:04:05 -0700 |
| commit | 37548994e69292932e9e2fafb7cba6c53e3a2bcd (patch) | |
| tree | 70ee1a1a40e83566170cc50a897fb45fa70d5aa1 /core/java/android/os | |
| parent | 53ad027c46bf578e26e5db70319b17a671ce8a36 (diff) | |
| parent | 6614bb657929c70dad988fb14b4b91f3b9d4f7fc (diff) | |
| download | frameworks_base-37548994e69292932e9e2fafb7cba6c53e3a2bcd.zip frameworks_base-37548994e69292932e9e2fafb7cba6c53e3a2bcd.tar.gz frameworks_base-37548994e69292932e9e2fafb7cba6c53e3a2bcd.tar.bz2 | |
Merge "StorageManager: fix issue that GREF has increased to 2011 in system server with intel stress test."
Diffstat (limited to 'core/java/android/os')
| -rw-r--r-- | core/java/android/os/storage/StorageManager.java | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/core/java/android/os/storage/StorageManager.java b/core/java/android/os/storage/StorageManager.java index fbf512c..a4819d8 100644 --- a/core/java/android/os/storage/StorageManager.java +++ b/core/java/android/os/storage/StorageManager.java @@ -56,7 +56,7 @@ public class StorageManager /* * Our internal MountService binder reference */ - private IMountService mMountService; + final private IMountService mMountService; /* * The looper target for callbacks @@ -304,8 +304,6 @@ public class StorageManager return; } mTgtLooper = tgtLooper; - mBinderListener = new MountServiceBinderListener(); - mMountService.registerListener(mBinderListener); } @@ -322,6 +320,15 @@ public class StorageManager } synchronized (mListeners) { + if (mBinderListener == null ) { + try { + mBinderListener = new MountServiceBinderListener(); + mMountService.registerListener(mBinderListener); + } catch (RemoteException rex) { + Log.e(TAG, "Register mBinderListener failed"); + return; + } + } mListeners.add(new ListenerDelegate(listener)); } } @@ -347,7 +354,15 @@ public class StorageManager break; } } - } + if (mListeners.size() == 0 && mBinderListener != null) { + try { + mMountService.unregisterListener(mBinderListener); + } catch (RemoteException rex) { + Log.e(TAG, "Unregister mBinderListener failed"); + return; + } + } + } } /** |
