From: David A. Velasco Date: Mon, 21 Sep 2015 19:25:11 +0000 (+0200) Subject: Grant that cancellations of tasks generating thumbnails really works for reused icon... X-Git-Tag: oc-android-1.8~1^2~3^2 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/cd165b7ce6fd0900c74d69df5e45f23117565f1b?ds=inline Grant that cancellations of tasks generating thumbnails really works for reused icon views --- diff --git a/src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java b/src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java index ab0743a9..f0ecf767 100644 --- a/src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java +++ b/src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java @@ -195,10 +195,6 @@ public class ThumbnailsCacheManager { } protected void onPostExecute(Bitmap bitmap){ - if (isCancelled()) { - bitmap = null; - } - if (bitmap != null) { final ImageView imageView = mImageViewReference.get(); final ThumbnailGenerationTask bitmapWorkerTask = getBitmapWorkerTask(imageView); @@ -365,6 +361,7 @@ public class ThumbnailsCacheManager { if (bitmapData == null || bitmapData != file) { // Cancel previous task bitmapWorkerTask.cancel(true); + Log_OC.v(TAG, "Cancelled generation of thumbnail for a reused imageView"); } else { // The same work is already in progress return false; diff --git a/src/com/owncloud/android/ui/adapter/LocalFileListAdapter.java b/src/com/owncloud/android/ui/adapter/LocalFileListAdapter.java index 373d791a..60675f46 100644 --- a/src/com/owncloud/android/ui/adapter/LocalFileListAdapter.java +++ b/src/com/owncloud/android/ui/adapter/LocalFileListAdapter.java @@ -37,6 +37,7 @@ import android.widget.TextView; import com.owncloud.android.R; import com.owncloud.android.datamodel.ThumbnailsCacheManager; +import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.utils.BitmapUtils; import com.owncloud.android.utils.DisplayUtils; import com.owncloud.android.utils.MimetypeIconUtil; @@ -46,7 +47,9 @@ import com.owncloud.android.utils.MimetypeIconUtil; * in a local directory */ public class LocalFileListAdapter extends BaseAdapter implements ListAdapter { - + + private static final String TAG = LocalFileListAdapter.class.getSimpleName(); + private Context mContext; private File mDirectory; private File[] mFiles = null; @@ -104,6 +107,12 @@ public class LocalFileListAdapter extends BaseAdapter implements ListAdapter { fileName.setText(name); ImageView fileIcon = (ImageView) view.findViewById(R.id.thumbnail); + + /** Cancellation needs do be checked and done before changing the drawable in fileIcon, or + * {@link ThumbnailsCacheManager#cancelPotentialWork} will NEVER cancel any task. + **/ + boolean allowedToCreateNewThumbnail = (ThumbnailsCacheManager.cancelPotentialWork(file, fileIcon)); + if (!file.isDirectory()) { fileIcon.setImageResource(R.drawable.file); } else { @@ -143,7 +152,7 @@ public class LocalFileListAdapter extends BaseAdapter implements ListAdapter { } else { // generate new Thumbnail - if (ThumbnailsCacheManager.cancelPotentialWork(file, fileIcon)) { + if (allowedToCreateNewThumbnail) { final ThumbnailsCacheManager.ThumbnailGenerationTask task = new ThumbnailsCacheManager.ThumbnailGenerationTask(fileIcon); if (thumbnail == null) { @@ -157,7 +166,9 @@ public class LocalFileListAdapter extends BaseAdapter implements ListAdapter { ); fileIcon.setImageDrawable(asyncDrawable); task.execute(file); - } + Log_OC.v(TAG, "Executing task to generate a new thumbnail"); + + } // else, already being generated, don't restart it } } else { fileIcon.setImageResource(MimetypeIconUtil.getFileTypeIconId(null, file.getName()));