@@ -38,7 +38,7 @@ import com.owncloud.android.utils.BitmapUtils
3838import com.owncloud.android.utils.MimeType
3939import com.owncloud.android.utils.MimeTypeUtil
4040import com.owncloud.android.utils.theme.ViewThemeUtils
41- import java.util.Collections
41+ import java.util.concurrent.CopyOnWriteArrayList
4242import java.util.concurrent.Executors
4343import javax.inject.Inject
4444import javax.inject.Provider
@@ -67,7 +67,7 @@ class FileThumbnailGenerator @Inject constructor(
6767 maxOf(MIN_THREADS , Runtime .getRuntime().availableProcessors() / CORES_PER_THREAD )
6868 )
6969
70- private val tasks = Collections .synchronizedList(mutableListOf <ThumbnailGenerationTask >() )
70+ private val tasks = CopyOnWriteArrayList <ThumbnailGenerationTask >()
7171
7272 fun setThumbnail (file : OCFile , view : ImageView , arguments : ThumbnailArguments ) {
7373 if (file.remoteId == null ) {
@@ -109,13 +109,11 @@ class FileThumbnailGenerator @Inject constructor(
109109 }
110110
111111 fun cancelPendingTasks () {
112- synchronized(tasks) {
113- tasks.forEach { task ->
114- task.cancel(true )
115- task.getMethod?.abort()
116- }
117- tasks.clear()
112+ tasks.forEach { task ->
113+ task.cancel(true )
114+ task.getMethod?.abort()
118115 }
116+ tasks.clear()
119117 }
120118
121119 private fun show (bitmap : Bitmap , file : OCFile , view : ImageView , arguments : ThumbnailArguments ) {
@@ -158,12 +156,9 @@ class FileThumbnailGenerator @Inject constructor(
158156 return
159157 }
160158
161- val alreadyRunning = synchronized(tasks) {
162- tasks.removeAll { it.isCancelled || it.status == AsyncTask .Status .FINISHED }
163- tasks.any { it.imageKey == file.remoteId }
164- }
159+ tasks.removeIf { it.isCancelled || it.status == AsyncTask .Status .FINISHED }
165160
166- if (! alreadyRunning ) {
161+ if (tasks.none { it.imageKey == file.remoteId } ) {
167162 startTask(
168163 file,
169164 view,
0 commit comments