diff options
| author | Mathias Jeppsson <mathias.jeppsson@sonyericsson.com> | 2010-09-03 11:35:00 +0200 |
|---|---|---|
| committer | Johan Redestig <johan.redestig@sonyericsson.com> | 2010-09-03 11:35:00 +0200 |
| commit | 7f8069b16fe9b18b9a048284b983c47eb628c789 (patch) | |
| tree | c4990d6d2d4865c2296e8494b7ad0678aaa8a6b4 /core/java | |
| parent | 75a2ae937f5354a3432d0a2382e98177bd9b80d5 (diff) | |
| download | frameworks_base-7f8069b16fe9b18b9a048284b983c47eb628c789.zip frameworks_base-7f8069b16fe9b18b9a048284b983c47eb628c789.tar.gz frameworks_base-7f8069b16fe9b18b9a048284b983c47eb628c789.tar.bz2 | |
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
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/text/method/TextKeyListener.java | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/core/java/android/text/method/TextKeyListener.java b/core/java/android/text/method/TextKeyListener.java index 5be2a48..0c12c55 100644 --- a/core/java/android/text/method/TextKeyListener.java +++ b/core/java/android/text/method/TextKeyListener.java @@ -246,8 +246,11 @@ public class TextKeyListener extends BaseKeyListener implements SpanWatcher { private void initPrefs(Context context) { final ContentResolver contentResolver = context.getContentResolver(); mResolver = new WeakReference<ContentResolver>(contentResolver); - mObserver = new SettingsObserver(); - contentResolver.registerContentObserver(Settings.System.CONTENT_URI, true, mObserver); + + if (mObserver == null) { + mObserver = new SettingsObserver(); + contentResolver.registerContentObserver(Settings.System.CONTENT_URI, true, mObserver); + } updatePrefs(contentResolver); mPrefsInited = true; |
