Skip to content
Snippets Groups Projects
Unverified Commit 02e704bc authored by Philipp Woessner's avatar Philipp Woessner Committed by GitHub
Browse files

Re-schedule jobs if they were killed and the app was woken up by the WakeUpService (#972)

* re-schedule jobs if they were killed and the app was woken up by the WakeUpService

* init WorkManager in onCreate
parent 45cb1c35
No related branches found
No related tags found
No related merge requests found
...@@ -16,9 +16,11 @@ import androidx.lifecycle.ProcessLifecycleOwner ...@@ -16,9 +16,11 @@ import androidx.lifecycle.ProcessLifecycleOwner
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.localbroadcastmanager.content.LocalBroadcastManager import androidx.localbroadcastmanager.content.LocalBroadcastManager
import androidx.work.Configuration import androidx.work.Configuration
import androidx.work.WorkManager
import de.rki.coronawarnapp.exception.reporting.ErrorReportReceiver import de.rki.coronawarnapp.exception.reporting.ErrorReportReceiver
import de.rki.coronawarnapp.exception.reporting.ReportingConstants.ERROR_REPORT_LOCAL_BROADCAST_CHANNEL import de.rki.coronawarnapp.exception.reporting.ReportingConstants.ERROR_REPORT_LOCAL_BROADCAST_CHANNEL
import de.rki.coronawarnapp.notification.NotificationHelper import de.rki.coronawarnapp.notification.NotificationHelper
import de.rki.coronawarnapp.storage.LocalData
import de.rki.coronawarnapp.transaction.RetrieveDiagnosisKeysTransaction import de.rki.coronawarnapp.transaction.RetrieveDiagnosisKeysTransaction
import de.rki.coronawarnapp.util.ConnectivityHelper import de.rki.coronawarnapp.util.ConnectivityHelper
import de.rki.coronawarnapp.worker.BackgroundWorkHelper import de.rki.coronawarnapp.worker.BackgroundWorkHelper
...@@ -30,7 +32,7 @@ import java.security.Security ...@@ -30,7 +32,7 @@ import java.security.Security
import java.util.UUID import java.util.UUID
class CoronaWarnApplication : Application(), LifecycleObserver, class CoronaWarnApplication : Application(), LifecycleObserver,
Application.ActivityLifecycleCallbacks, Configuration.Provider { Application.ActivityLifecycleCallbacks {
companion object { companion object {
val TAG: String? = CoronaWarnApplication::class.simpleName val TAG: String? = CoronaWarnApplication::class.simpleName
...@@ -54,6 +56,12 @@ class CoronaWarnApplication : Application(), LifecycleObserver, ...@@ -54,6 +56,12 @@ class CoronaWarnApplication : Application(), LifecycleObserver,
override fun onCreate() { override fun onCreate() {
super.onCreate() super.onCreate()
instance = this instance = this
val configuration = Configuration.Builder()
.setMinimumLoggingLevel(android.util.Log.DEBUG)
.build()
WorkManager.initialize(this, configuration)
NotificationHelper.createNotificationChannel() NotificationHelper.createNotificationChannel()
// Enable Conscrypt for TLS1.3 Support below API Level 29 // Enable Conscrypt for TLS1.3 Support below API Level 29
Security.insertProviderAt(Conscrypt.newProvider(), 1) Security.insertProviderAt(Conscrypt.newProvider(), 1)
...@@ -70,7 +78,7 @@ class CoronaWarnApplication : Application(), LifecycleObserver, ...@@ -70,7 +78,7 @@ class CoronaWarnApplication : Application(), LifecycleObserver,
"Application onCreate", "App was woken up" "Application onCreate", "App was woken up"
) )
// Only do this if the background jobs are enabled // Only do this if the background jobs are enabled
if (ConnectivityHelper.autoModeEnabled(applicationContext)) if (ConnectivityHelper.autoModeEnabled(applicationContext)) {
ProcessLifecycleOwner.get().lifecycleScope.launch { ProcessLifecycleOwner.get().lifecycleScope.launch {
// we want a wakelock as the OS does not handle this for us like in the background // we want a wakelock as the OS does not handle this for us like in the background
// job execution // job execution
...@@ -114,6 +122,11 @@ class CoronaWarnApplication : Application(), LifecycleObserver, ...@@ -114,6 +122,11 @@ class CoronaWarnApplication : Application(), LifecycleObserver,
if (wifiLock.isHeld) wifiLock.release() if (wifiLock.isHeld) wifiLock.release()
if (wakeLock.isHeld) wakeLock.release() if (wakeLock.isHeld) wakeLock.release()
} }
// if the user is onboarded we will schedule period background jobs
// in case the app was force stopped and woken up again by the Google WakeUpService
if (LocalData.onboardingCompletedTimestamp() != null) BackgroundWorkScheduler.startWorkScheduler()
}
} }
/** /**
...@@ -167,9 +180,4 @@ class CoronaWarnApplication : Application(), LifecycleObserver, ...@@ -167,9 +180,4 @@ class CoronaWarnApplication : Application(), LifecycleObserver,
LocalBroadcastManager.getInstance(this) LocalBroadcastManager.getInstance(this)
.registerReceiver(errorReceiver, IntentFilter(ERROR_REPORT_LOCAL_BROADCAST_CHANNEL)) .registerReceiver(errorReceiver, IntentFilter(ERROR_REPORT_LOCAL_BROADCAST_CHANNEL))
} }
override fun getWorkManagerConfiguration() =
Configuration.Builder()
.setMinimumLoggingLevel(android.util.Log.DEBUG)
.build()
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment