From 4662c0bdaa38c6e1854b16b866e90dec81c75225 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Wed, 6 Jan 2021 16:15:43 +0100 Subject: [PATCH] set up WorkManager on demand to avoid slowing down starts This also provides a convenient place to configure the debug logging. --- app/proguard-rules.pro | 7 +++- app/src/main/AndroidManifest.xml | 7 +++- .../java/org/fdroid/fdroid/FDroidApp.java | 38 ++++++++++++++----- 3 files changed, 38 insertions(+), 14 deletions(-) diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index f20d85241..045bbd72a 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -4,13 +4,11 @@ -keep class org.fdroid.fdroid.** {*;} -dontskipnonpubliclibraryclassmembers -dontwarn android.test.** --dontwarn com.android.support.test.** -dontwarn javax.naming.** -dontwarn org.slf4j.** -dontnote org.apache.http.** -dontnote android.net.http.** --dontnote android.support.** -dontnote **ILicensingService # Needed for espresso https://stackoverflow.com/a/21706087 @@ -48,4 +46,9 @@ public static final org.codehaus.jackson.annotate.JsonAutoDetect$Visibility *; } -keep public class your.class.** { *; +} + +# This is necessary so that RemoteWorkManager can be initialized (also marked with @Keep) +-keep class androidx.work.multiprocess.RemoteWorkManagerClient { + public (...); } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 80592fbb3..34c9c6304 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -266,8 +266,11 @@ android:name=".AddRepoIntentService" android:exported="false"/> - - + * Must be called on App startup and after every proxy configuration change. */ public static void configureProxy(Preferences preferences) { @@ -676,4 +672,26 @@ public class FDroidApp extends Application { public static Context getInstance() { return instance; } + + /** + * Set up WorkManager on demand to avoid slowing down starts. + * + * @see CleanCacheWorker + * @see org.fdroid.fdroid.work.PopularityContestWorker + * @see org.fdroid.fdroid.work.UpdateWorker + * @see example + */ + @NonNull + @Override + public androidx.work.Configuration getWorkManagerConfiguration() { + if (BuildConfig.DEBUG) { + return new androidx.work.Configuration.Builder() + .setMinimumLoggingLevel(Log.DEBUG) + .build(); + } else { + return new androidx.work.Configuration.Builder() + .setMinimumLoggingLevel(Log.ERROR) + .build(); + } + } }