summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/data
diff options
context:
space:
mode:
authorDoris Liu <tianliu@google.com>2013-09-26 15:23:41 -0700
committerDoris Liu <tianliu@google.com>2013-09-26 16:19:45 -0700
commit2b86d873ca4fb3a921139633ed7be9959ab452df (patch)
treeccd04a8b5453a0287aaa2a7b14bb890067ae12a4 /src/com/android/camera/data
parent667880948de7a051f62359878cb61c1e0a867e24 (diff)
downloadandroid_packages_apps_Snap-2b86d873ca4fb3a921139633ed7be9959ab452df.tar.gz
android_packages_apps_Snap-2b86d873ca4fb3a921139633ed7be9959ab452df.tar.bz2
android_packages_apps_Snap-2b86d873ca4fb3a921139633ed7be9959ab452df.zip
Fix memory leak of context in LocalMediaObserver
Bug: 10728773 Change-Id: Ie5a50590e71fd4b853cb7590db4fa14f5b6dc73b
Diffstat (limited to 'src/com/android/camera/data')
-rw-r--r--src/com/android/camera/data/LocalMediaObserver.java32
1 files changed, 20 insertions, 12 deletions
diff --git a/src/com/android/camera/data/LocalMediaObserver.java b/src/com/android/camera/data/LocalMediaObserver.java
index 4dd0f8897..d676396a7 100644
--- a/src/com/android/camera/data/LocalMediaObserver.java
+++ b/src/com/android/camera/data/LocalMediaObserver.java
@@ -17,10 +17,6 @@
package com.android.camera.data;
import android.database.ContentObserver;
-import android.net.Uri;
-import android.os.Handler;
-
-import com.android.camera.CameraActivity;
/**
* Listening to the changes to the local image and video data. onChange will
@@ -28,20 +24,32 @@ import com.android.camera.CameraActivity;
*/
public class LocalMediaObserver extends ContentObserver {
- private final CameraActivity mActivity;
+ private boolean mActivityPaused = false;
+ private boolean mMediaDataChangedDuringPause = false;
- public LocalMediaObserver(Handler handler, CameraActivity activity) {
- super(handler);
- mActivity = activity;
+ public LocalMediaObserver() {
+ super(null);
}
+ /**
+ * When the activity is paused and MediaObserver get onChange() call, then
+ * we would like to set a dirty bit to reload the data at onResume().
+ */
@Override
public void onChange(boolean selfChange) {
- this.onChange(selfChange, null);
+ if (mActivityPaused) {
+ mMediaDataChangedDuringPause = true;
+ }
}
- @Override
- public void onChange(boolean selfChange, Uri uri) {
- mActivity.setDirtyWhenPaused();
+ public void setActivityPaused(boolean paused) {
+ mActivityPaused = paused;
+ if (!paused) {
+ mMediaDataChangedDuringPause = false;
+ }
+ }
+
+ public boolean isMediaDataChangedDuringPause() {
+ return mMediaDataChangedDuringPause;
}
}