set up WorkManager on demand to avoid slowing down starts

This also provides a convenient place to configure the debug logging.
This commit is contained in:
Hans-Christoph Steiner 2021-01-06 16:15:43 +01:00
parent 2975d4c09f
commit 4662c0bdaa
3 changed files with 38 additions and 14 deletions

View File

@ -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 <init>(...);
}

View File

@ -266,8 +266,11 @@
android:name=".AddRepoIntentService"
android:exported="false"/>
<!-- Warning: Please add all new services to HidingManager -->
<provider
android:name="androidx.work.impl.WorkManagerInitializer"
android:authorities="${applicationId}.workmanager-init"
android:exported="false"
tools:node="remove" />
<activity
android:name=".views.main.MainActivity"

View File

@ -46,11 +46,10 @@ import android.util.Log;
import android.view.Display;
import android.view.WindowManager;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.collection.LongSparseArray;
import androidx.core.content.ContextCompat;
import com.nostra13.universalimageloader.cache.disc.DiskCache;
import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache;
import com.nostra13.universalimageloader.cache.disc.impl.ext.LruDiskCache;
@ -58,7 +57,8 @@ import com.nostra13.universalimageloader.core.DefaultConfigurationFactory;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.process.BitmapProcessor;
import info.guardianproject.netcipher.NetCipher;
import info.guardianproject.netcipher.proxy.OrbotHelper;
import org.acra.ACRA;
import org.acra.ReportField;
import org.acra.ReportingInteractionMode;
@ -82,17 +82,13 @@ import org.fdroid.fdroid.net.ImageLoaderForUIL;
import org.fdroid.fdroid.panic.HidingManager;
import org.fdroid.fdroid.work.CleanCacheWorker;
import javax.microedition.khronos.opengles.GL10;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.security.Security;
import java.util.List;
import java.util.UUID;
import javax.microedition.khronos.opengles.GL10;
import info.guardianproject.netcipher.NetCipher;
import info.guardianproject.netcipher.proxy.OrbotHelper;
@ReportsCrashes(mailTo = BuildConfig.ACRA_REPORT_EMAIL,
mode = ReportingInteractionMode.DIALOG,
reportDialogClass = org.fdroid.fdroid.acra.CrashReportActivity.class,
@ -113,7 +109,7 @@ import info.guardianproject.netcipher.proxy.OrbotHelper;
ReportField.STACK_TRACE,
}
)
public class FDroidApp extends Application {
public class FDroidApp extends Application implements androidx.work.Configuration.Provider {
private static final String TAG = "FDroidApp";
private static final String ACRA_ID = BuildConfig.APPLICATION_ID + ":acra";
@ -654,7 +650,7 @@ public class FDroidApp extends Application {
/**
* Put proxy settings (or Tor settings) globally into effect based on whats configured in Preferences.
*
* <p>
* 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 <a href="https://developer.android.com/codelabs/android-adv-workmanager#3">example</a>
*/
@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();
}
}
}