diff options
Diffstat (limited to 'src/com/android/camera/data')
-rw-r--r-- | src/com/android/camera/data/AbstractLocalDataAdapterWrapper.java | 5 | ||||
-rwxr-xr-x | src/com/android/camera/data/CameraDataAdapter.java | 21 | ||||
-rw-r--r-- | src/com/android/camera/data/LocalDataAdapter.java | 3 |
3 files changed, 25 insertions, 4 deletions
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(); } |