diff options
| author | 2012-08-10 09:26:53 -0700 | |
|---|---|---|
| committer | 2012-08-10 09:26:53 -0700 | |
| commit | cb80cb700d15319c20686998e822aed32a56adf5 (patch) | |
| tree | 75057e66a52774c628493891dd1291071d5c7ac7 | |
| parent | d2388b50a5c16b920bdd656448107a21e49d753b (diff) | |
| parent | 37548994e69292932e9e2fafb7cba6c53e3a2bcd (diff) | |
am 37548994: Merge "StorageManager: fix issue that GREF has increased to 2011 in system server with intel stress test."
* commit '37548994e69292932e9e2fafb7cba6c53e3a2bcd':
StorageManager: fix issue that GREF has increased to 2011 in system server with intel stress test.
| -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 cb6c1dc4cf97..8a20a6ea863d 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; + } + } + } } /** |