diff --git a/app/src/main/java/com/nextcloud/client/jobs/gallery/GalleryImageGenerationJob.kt b/app/src/main/java/com/nextcloud/client/jobs/gallery/GalleryImageGenerationJob.kt index 7138193a430c..0e4d2149baa9 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/gallery/GalleryImageGenerationJob.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/gallery/GalleryImageGenerationJob.kt @@ -40,6 +40,13 @@ class GalleryImageGenerationJob(private val user: User, private val storageManag ) private val activeJobs = WeakHashMap() + fun cancelAllActiveJobs() { + for ((_, job) in activeJobs) { + job.cancel() + } + activeJobs.clear() + } + fun removeActiveJob(imageView: ImageView, job: CoroutineScope) { if (isActiveJob(imageView, job)) { removeJob(imageView) diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/GalleryAdapter.kt b/app/src/main/java/com/owncloud/android/ui/adapter/GalleryAdapter.kt index 0c84fe6c84e3..f7f0bc2ef76b 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/GalleryAdapter.kt +++ b/app/src/main/java/com/owncloud/android/ui/adapter/GalleryAdapter.kt @@ -372,4 +372,8 @@ class GalleryAdapter( override fun setHighlightedItem(file: OCFile) = Unit override fun setSortOrder(mFile: OCFile, sortOrder: FileSortOrder) = Unit + + fun cleanup() { + ocFileListDelegate.cleanup() + } } diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListDelegate.kt b/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListDelegate.kt index 7cc6c4b59e6f..638faacd7596 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListDelegate.kt +++ b/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListDelegate.kt @@ -413,6 +413,13 @@ class OCFileListDelegate( fun cleanup() { ioScope.cancel() + + GalleryImageGenerationJob.cancelAllActiveJobs() + + // cancel async tasks from ThumbnailsCacheManager + cancelAllPendingTasks() + + Log_OC.d(TAG, "background jobs cancelled") } companion object { diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/GalleryFragment.java b/app/src/main/java/com/owncloud/android/ui/fragment/GalleryFragment.java index 094c03da6464..cf1a649c2dc0 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/GalleryFragment.java +++ b/app/src/main/java/com/owncloud/android/ui/fragment/GalleryFragment.java @@ -120,6 +120,7 @@ public static void setLastMediaItemPosition(Integer position) { public void onDestroyView() { LocalBroadcastManager.getInstance(requireContext()).unregisterReceiver(refreshSearchEventReceiver); setLastMediaItemPosition(null); + mAdapter.cleanup(); super.onDestroyView(); }