From 9c0cb227c9bc7b00429e353bfac1b23a1ef07d11 Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Mon, 12 Jan 2026 11:54:26 +0100 Subject: [PATCH] updated Signed-off-by: tobiasKaminsky --- .../java/com/nextcloud/client/di/AppModule.java | 3 ++- .../android/ui/activity/UploadListActivity.java | 6 ++++++ .../android/ui/adapter/UploadListAdapter.java | 16 ++++++++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/nextcloud/client/di/AppModule.java b/app/src/main/java/com/nextcloud/client/di/AppModule.java index 32a0150aa0f3..62d1d10c3078 100644 --- a/app/src/main/java/com/nextcloud/client/di/AppModule.java +++ b/app/src/main/java/com/nextcloud/client/di/AppModule.java @@ -42,13 +42,13 @@ import com.nextcloud.client.notifications.AppNotificationManagerImpl; import com.nextcloud.client.preferences.AppPreferences; import com.nextcloud.client.utils.Throttler; -import com.owncloud.android.providers.UsersAndGroupsSearchConfig; import com.owncloud.android.authentication.PassCodeManager; import com.owncloud.android.datamodel.ArbitraryDataProvider; import com.owncloud.android.datamodel.ArbitraryDataProviderImpl; import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.SyncedFolderProvider; import com.owncloud.android.datamodel.UploadsStorageManager; +import com.owncloud.android.providers.UsersAndGroupsSearchConfig; import com.owncloud.android.ui.activities.data.activities.ActivitiesRepository; import com.owncloud.android.ui.activities.data.activities.ActivitiesServiceApi; import com.owncloud.android.ui.activities.data.activities.ActivitiesServiceApiImpl; @@ -134,6 +134,7 @@ FilesRepository filesRepository(UserAccountManager accountManager, ClientFactory } @Provides + @Singleton UploadsStorageManager uploadsStorageManager(CurrentAccountProvider currentAccountProvider, Context context) { return new UploadsStorageManager(currentAccountProvider, context.getContentResolver()); diff --git a/app/src/main/java/com/owncloud/android/ui/activity/UploadListActivity.java b/app/src/main/java/com/owncloud/android/ui/activity/UploadListActivity.java index f66a279a44a2..e61d7d3a781b 100755 --- a/app/src/main/java/com/owncloud/android/ui/activity/UploadListActivity.java +++ b/app/src/main/java/com/owncloud/android/ui/activity/UploadListActivity.java @@ -321,6 +321,12 @@ public void onRemoteOperationFinish(RemoteOperation operation, RemoteOperationRe } } + @Override + protected void onDestroy() { + super.onDestroy(); + uploadListAdapter.onDestroy(); + } + /** * Once the file upload has changed its status -> update uploads list view */ diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/UploadListAdapter.java b/app/src/main/java/com/owncloud/android/ui/adapter/UploadListAdapter.java index fac48e303d2d..ce741a8c21fe 100755 --- a/app/src/main/java/com/owncloud/android/ui/adapter/UploadListAdapter.java +++ b/app/src/main/java/com/owncloud/android/ui/adapter/UploadListAdapter.java @@ -16,6 +16,8 @@ import android.graphics.Bitmap; import android.graphics.drawable.Drawable; import android.net.Uri; +import android.os.Handler; +import android.os.Looper; import android.text.format.DateUtils; import android.view.LayoutInflater; import android.view.View; @@ -61,6 +63,7 @@ import java.util.Arrays; import java.util.HashSet; import java.util.List; +import java.util.Observer; import java.util.Optional; import java.util.Set; import java.util.concurrent.LinkedBlockingQueue; @@ -121,6 +124,8 @@ public static List getConfigs() { private final List uploadGroupConfigs = GroupConfig.getConfigs(); private final FileUploadHelper uploadHelper = FileUploadHelper.Companion.instance(); + private Observer uploadDbObserver; + private final Handler mainHandler; public UploadListAdapter(final FileActivity fileActivity, final UploadsStorageManager uploadsStorageManager, @@ -146,6 +151,10 @@ public UploadListAdapter(final FileActivity fileActivity, shouldShowHeadersForEmptySections(false); initUploadGroups(); showUser = accountManager.getAccounts().length > 1; + + mainHandler = new Handler(Looper.getMainLooper()); + uploadDbObserver = (o, arg) -> mainHandler.post(this::loadUploadItemsFromDb); + uploadsStorageManager.addObserver(uploadDbObserver); } private void initUploadGroups() { @@ -1086,4 +1095,11 @@ public void cancelOldErrorNotification(OCUpload upload) { mNotificationManager.cancel((int) upload.getUploadId()); } + + /** + * Must be called when parent view is destroyed + */ + public void onDestroy() { + uploadsStorageManager.deleteObserver(this.uploadDbObserver); + } }