Skip to content

Commit 7f8069b

Browse files
Mathias JeppssonJohan Redestig
authored andcommitted
Memory leak in TextKeyListener.
If a call to getPrefs is made after weak reference to content resolver is gone, a new observer will be created and registered at the resolver. At registration, the resolver will allocate ObserverEntry objects that will eventually fill the JNI global reference pool. There is no need to create and register a new observer if one is already registered. Change-Id: If8442b3370299980b73d4ea83757c5eae6a85408
1 parent 75a2ae9 commit 7f8069b

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

core/java/android/text/method/TextKeyListener.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -246,8 +246,11 @@ public void release() {
246246
private void initPrefs(Context context) {
247247
final ContentResolver contentResolver = context.getContentResolver();
248248
mResolver = new WeakReference<ContentResolver>(contentResolver);
249-
mObserver = new SettingsObserver();
250-
contentResolver.registerContentObserver(Settings.System.CONTENT_URI, true, mObserver);
249+
250+
if (mObserver == null) {
251+
mObserver = new SettingsObserver();
252+
contentResolver.registerContentObserver(Settings.System.CONTENT_URI, true, mObserver);
253+
}
251254

252255
updatePrefs(contentResolver);
253256
mPrefsInited = true;

0 commit comments

Comments
 (0)