From d2fea72ed9322af0b7454c9747d837f1643e4037 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Tue, 9 Apr 2019 23:08:39 +0200 Subject: [PATCH] always update itself last When auto-updates are enabled, the app should update itself last, to ensure that all of the other apps are completely updated before this app is killed as part of the update process. closes #1556 --- .../java/org/fdroid/fdroid/UpdateService.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/app/src/main/java/org/fdroid/fdroid/UpdateService.java b/app/src/main/java/org/fdroid/fdroid/UpdateService.java index e4627e4e7..980dc8dc8 100644 --- a/app/src/main/java/org/fdroid/fdroid/UpdateService.java +++ b/app/src/main/java/org/fdroid/fdroid/UpdateService.java @@ -544,12 +544,27 @@ public class UpdateService extends JobIntentService { } } + /** + * Queues all apps needing update. If this app itself (e.g. F-Droid) needs + * to be updated, it is queued last. + */ public static void autoDownloadUpdates(Context context) { List canUpdate = AppProvider.Helper.findCanUpdate(context, Schema.AppMetadataTable.Cols.ALL); + String packageName = context.getPackageName(); + App updateLastApp = null; + Apk updateLastApk = null; for (App app : canUpdate) { + if (TextUtils.equals(packageName, app.packageName)) { + updateLastApp = app; + updateLastApk = ApkProvider.Helper.findSuggestedApk(context, app); + continue; + } Apk apk = ApkProvider.Helper.findSuggestedApk(context, app); InstallManagerService.queue(context, app, apk); } + if (updateLastApp != null && updateLastApk != null) { + InstallManagerService.queue(context, updateLastApp, updateLastApk); + } } private void showAppUpdatesNotification(List canUpdate) {