diff --git a/app/src/main/java/org/fdroid/fdroid/AppUpdateStatusManager.java b/app/src/main/java/org/fdroid/fdroid/AppUpdateStatusManager.java index 90f00c7ad..545abf37f 100644 --- a/app/src/main/java/org/fdroid/fdroid/AppUpdateStatusManager.java +++ b/app/src/main/java/org/fdroid/fdroid/AppUpdateStatusManager.java @@ -19,6 +19,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; +import java.util.List; import java.util.Map; public class AppUpdateStatusManager { @@ -187,6 +188,15 @@ public class AppUpdateStatusManager { } } + + public void addApks(List apksToUpdate, Status status) { + startBatchUpdates(); + for (Apk apk : apksToUpdate) { + addApk(apk, status, null); + } + endBatchUpdates(); + } + /** * Add an Apk to the AppUpdateStatusManager manager. * @param apk The apk to add. @@ -250,13 +260,13 @@ public class AppUpdateStatusManager { } } - void startBatchUpdates() { + private void startBatchUpdates() { synchronized (appMapping) { isBatchUpdating = true; } } - void endBatchUpdates() { + private void endBatchUpdates() { synchronized (appMapping) { isBatchUpdating = false; notifyChange(); diff --git a/app/src/main/java/org/fdroid/fdroid/UpdateService.java b/app/src/main/java/org/fdroid/fdroid/UpdateService.java index 11a11cf4f..58b3ce6d4 100644 --- a/app/src/main/java/org/fdroid/fdroid/UpdateService.java +++ b/app/src/main/java/org/fdroid/fdroid/UpdateService.java @@ -489,14 +489,13 @@ public class UpdateService extends IntentService { private void showAppUpdatesNotification(Cursor hasUpdates) { if (hasUpdates != null) { hasUpdates.moveToFirst(); - appUpdateStatusManager.startBatchUpdates(); + List apksToUpdate = new ArrayList<>(hasUpdates.getCount()); for (int i = 0; i < hasUpdates.getCount(); i++) { App app = new App(hasUpdates); hasUpdates.moveToNext(); - Apk apk = ApkProvider.Helper.findApkFromAnyRepo(this, app.packageName, app.suggestedVersionCode); - appUpdateStatusManager.addApk(apk, AppUpdateStatusManager.Status.UpdateAvailable, null); + apksToUpdate.add(ApkProvider.Helper.findApkFromAnyRepo(this, app.packageName, app.suggestedVersionCode)); } - appUpdateStatusManager.endBatchUpdates(); + appUpdateStatusManager.addApks(apksToUpdate, AppUpdateStatusManager.Status.UpdateAvailable); } }