summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/com/android/camera/CameraActivity.java3
-rw-r--r--src/com/android/camera/data/AbstractLocalDataAdapterWrapper.java5
-rwxr-xr-xsrc/com/android/camera/data/CameraDataAdapter.java21
-rw-r--r--src/com/android/camera/data/LocalDataAdapter.java3
4 files changed, 28 insertions, 4 deletions
diff --git a/src/com/android/camera/CameraActivity.java b/src/com/android/camera/CameraActivity.java
index d6224cd5a..4f5d923ac 100644
--- a/src/com/android/camera/CameraActivity.java
+++ b/src/com/android/camera/CameraActivity.java
@@ -1827,6 +1827,9 @@ public class CameraActivity extends Activity
mCursor.close();
mCursor=null;
}
+ if (mDataAdapter != null) {
+ mDataAdapter.stopLoading();
+ }
super.onDestroy();
}
diff --git a/src/com/android/camera/data/AbstractLocalDataAdapterWrapper.java b/src/com/android/camera/data/AbstractLocalDataAdapterWrapper.java
index ef1e4258c..bc239788b 100644
--- a/src/com/android/camera/data/AbstractLocalDataAdapterWrapper.java
+++ b/src/com/android/camera/data/AbstractLocalDataAdapterWrapper.java
@@ -98,4 +98,9 @@ public abstract class AbstractLocalDataAdapterWrapper implements LocalDataAdapte
public void refresh(ContentResolver resolver, Uri uri) {
mAdapter.refresh(resolver, uri);
}
+
+ @Override
+ public void stopLoading() {
+ mAdapter.stopLoading();
+ }
}
diff --git a/src/com/android/camera/data/CameraDataAdapter.java b/src/com/android/camera/data/CameraDataAdapter.java
index 7059221b8..bc3c6bc63 100755
--- a/src/com/android/camera/data/CameraDataAdapter.java
+++ b/src/com/android/camera/data/CameraDataAdapter.java
@@ -51,6 +51,7 @@ public class CameraDataAdapter implements LocalDataAdapter {
private int mSuggestedHeight = DEFAULT_DECODE_SIZE;
private LocalData mLocalDataToDelete;
+ private QueryTask mQueryTask;
public CameraDataAdapter(int placeholderResource) {
mImages = new LocalDataList();
@@ -59,8 +60,15 @@ public class CameraDataAdapter implements LocalDataAdapter {
@Override
public void requestLoad(ContentResolver resolver) {
- QueryTask qtask = new QueryTask();
- qtask.execute(resolver);
+ mQueryTask = new QueryTask();
+ mQueryTask.execute(resolver);
+ }
+
+ @Override
+ public void stopLoading() {
+ if (mQueryTask != null) {
+ mQueryTask.cancel(true);
+ }
}
@Override
@@ -328,7 +336,7 @@ public class CameraDataAdapter implements LocalDataAdapter {
if (c != null && c.moveToFirst()) {
// build up the list.
c.moveToFirst();
- while (true) {
+ while (!isCancelled()) {
LocalData data = LocalMediaData.VideoData.buildFromCursor(c);
if (data != null) {
l.add(data);
@@ -356,7 +364,12 @@ public class CameraDataAdapter implements LocalDataAdapter {
@Override
protected void onPostExecute(LocalDataList l) {
- replaceData(l);
+ if (!isCancelled()) {
+ replaceData(l);
+ }
+ if (mQueryTask == this) {
+ mQueryTask = null;
+ }
}
}
diff --git a/src/com/android/camera/data/LocalDataAdapter.java b/src/com/android/camera/data/LocalDataAdapter.java
index 0a5fde0b5..d8c5971ac 100644
--- a/src/com/android/camera/data/LocalDataAdapter.java
+++ b/src/com/android/camera/data/LocalDataAdapter.java
@@ -115,4 +115,7 @@ public interface LocalDataAdapter extends DataAdapter {
/** Insert a data. */
public void insertData(LocalData data);
+
+ /** Stop data loading */
+ public void stopLoading();
}