@@ -67,6 +67,7 @@ import eu.opencloud.android.presentation.settings.logging.SettingsLogsFragment.C
6767import eu.opencloud.android.providers.CoroutinesDispatcherProvider
6868import eu.opencloud.android.providers.LogsProvider
6969import eu.opencloud.android.providers.MdmProvider
70+ import eu.opencloud.android.providers.WorkManagerProvider
7071import eu.opencloud.android.ui.activity.FileDisplayActivity
7172import eu.opencloud.android.ui.activity.FileDisplayActivity.Companion.PREFERENCE_CLEAR_DATA_ALREADY_TRIGGERED
7273import eu.opencloud.android.ui.activity.WhatsNewActivity
@@ -78,6 +79,8 @@ import eu.opencloud.android.utils.FILE_SYNC_NOTIFICATION_CHANNEL_ID
7879import eu.opencloud.android.utils.MEDIA_SERVICE_NOTIFICATION_CHANNEL_ID
7980import eu.opencloud.android.utils.UPLOAD_NOTIFICATION_CHANNEL_ID
8081import kotlinx.coroutines.CoroutineScope
82+ import kotlinx.coroutines.Dispatchers
83+ import kotlinx.coroutines.launch
8184import kotlinx.coroutines.runBlocking
8285import kotlinx.coroutines.withContext
8386import org.koin.android.ext.android.inject
@@ -117,10 +120,11 @@ class MainApp : Application() {
117120
118121 SingleSessionManager .setUserAgent(userAgent)
119122
120-
121-
122123 initDependencyInjection()
123124
125+ val workManagerProvider: WorkManagerProvider by inject()
126+ var startedActivities = 0
127+
124128 // register global protection with pass code, pattern lock and biometric lock
125129 registerActivityLifecycleCallbacks(object : ActivityLifecycleCallbacks {
126130 override fun onActivityCreated (activity : Activity , savedInstanceState : Bundle ? ) {
@@ -219,6 +223,16 @@ class MainApp : Application() {
219223
220224 override fun onActivityStarted (activity : Activity ) {
221225 Timber .v(" ${activity.javaClass.simpleName} onStart() starting" )
226+ if (startedActivities == 0 ) {
227+ // App entered foreground — ensure the periodic worker is registered
228+ // (recovers if the chain was dropped) and trigger an immediate scan
229+ // so the user doesn't have to wait up to 15 min.
230+ CoroutineScope (Dispatchers .IO ).launch {
231+ workManagerProvider.enqueueAutomaticUploadsWorker()
232+ workManagerProvider.enqueueImmediateAutomaticUploadsWorker()
233+ }
234+ }
235+ startedActivities++
222236 PassCodeManager .onActivityStarted(activity)
223237 PatternManager .onActivityStarted(activity)
224238 BiometricManager .onActivityStarted(activity)
@@ -233,6 +247,7 @@ class MainApp : Application() {
233247 }
234248
235249 override fun onActivityStopped (activity : Activity ) {
250+ startedActivities--
236251 Timber .v(" ${activity.javaClass.simpleName} onStop() ending" )
237252 PassCodeManager .onActivityStopped(activity)
238253 PatternManager .onActivityStopped(activity)
0 commit comments