Skip to content

Commit 3754899

Browse files
Jean-Baptiste Queruandroid code review
authored andcommitted
Merge "StorageManager: fix issue that GREF has increased to 2011 in system server with intel stress test."
2 parents 53ad027 + 6614bb6 commit 3754899

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

core/java/android/os/storage/StorageManager.java

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public class StorageManager
5656
/*
5757
* Our internal MountService binder reference
5858
*/
59-
private IMountService mMountService;
59+
final private IMountService mMountService;
6060

6161
/*
6262
* The looper target for callbacks
@@ -304,8 +304,6 @@ public StorageManager(Looper tgtLooper) throws RemoteException {
304304
return;
305305
}
306306
mTgtLooper = tgtLooper;
307-
mBinderListener = new MountServiceBinderListener();
308-
mMountService.registerListener(mBinderListener);
309307
}
310308

311309

@@ -322,6 +320,15 @@ public void registerListener(StorageEventListener listener) {
322320
}
323321

324322
synchronized (mListeners) {
323+
if (mBinderListener == null ) {
324+
try {
325+
mBinderListener = new MountServiceBinderListener();
326+
mMountService.registerListener(mBinderListener);
327+
} catch (RemoteException rex) {
328+
Log.e(TAG, "Register mBinderListener failed");
329+
return;
330+
}
331+
}
325332
mListeners.add(new ListenerDelegate(listener));
326333
}
327334
}
@@ -347,7 +354,15 @@ public void unregisterListener(StorageEventListener listener) {
347354
break;
348355
}
349356
}
350-
}
357+
if (mListeners.size() == 0 && mBinderListener != null) {
358+
try {
359+
mMountService.unregisterListener(mBinderListener);
360+
} catch (RemoteException rex) {
361+
Log.e(TAG, "Unregister mBinderListener failed");
362+
return;
363+
}
364+
}
365+
}
351366
}
352367

353368
/**

0 commit comments

Comments
 (0)