@@ -7,6 +7,7 @@ package at.bitfire.icsdroid
77import android.content.ContentProviderClient
88import android.content.ContentUris
99import android.content.Context
10+ import android.os.Build
1011import android.os.DeadObjectException
1112import android.util.Log
1213import androidx.work.CoroutineWorker
@@ -17,7 +18,10 @@ import at.bitfire.icsdroid.calendar.LocalCalendar
1718import at.bitfire.icsdroid.db.AppDatabase
1819import at.bitfire.icsdroid.db.entity.Subscription
1920import at.bitfire.icsdroid.ui.NotificationUtils
21+ import kotlinx.coroutines.currentCoroutineContext
22+ import kotlinx.coroutines.job
2023import javax.inject.Inject
24+ import kotlin.coroutines.cancellation.CancellationException
2125
2226abstract class BaseSyncWorker (
2327 context : Context ,
@@ -42,6 +46,18 @@ abstract class BaseSyncWorker(
4246 private var forceReSync: Boolean = false
4347
4448 override suspend fun doWork (): Result {
49+ if (Build .VERSION .SDK_INT >= 31 ) {
50+ // Read reason from previous stop
51+ Log .d(Constants .TAG , " Previous worker stop reason: $stopReason " )
52+
53+ // Observe cancellation
54+ currentCoroutineContext().job.invokeOnCompletion { e ->
55+ if (e is CancellationException )
56+ Log .e(Constants .TAG , " Worker cancelled with reason: $stopReason " )
57+ }
58+ }
59+
60+ // Check whether we should force a complete sync
4561 forceReSync = inputData.getBoolean(FORCE_RESYNC , false )
4662
4763 provider = try {
0 commit comments