Skip to content

Commit a73ea62

Browse files
authored
Log previous and current work cancellation reasons (#750)
* Log previous and current work cancellation reasons * Use currentCoroutineContext Signed-off-by: Sunik Kupfer <kupfer@bitfire.at> --------- Signed-off-by: Sunik Kupfer <kupfer@bitfire.at>
1 parent a1aa5b2 commit a73ea62

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

app/src/main/java/at/bitfire/icsdroid/BaseSyncWorker.kt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ package at.bitfire.icsdroid
77
import android.content.ContentProviderClient
88
import android.content.ContentUris
99
import android.content.Context
10+
import android.os.Build
1011
import android.os.DeadObjectException
1112
import android.util.Log
1213
import androidx.work.CoroutineWorker
@@ -17,7 +18,10 @@ import at.bitfire.icsdroid.calendar.LocalCalendar
1718
import at.bitfire.icsdroid.db.AppDatabase
1819
import at.bitfire.icsdroid.db.entity.Subscription
1920
import at.bitfire.icsdroid.ui.NotificationUtils
21+
import kotlinx.coroutines.currentCoroutineContext
22+
import kotlinx.coroutines.job
2023
import javax.inject.Inject
24+
import kotlin.coroutines.cancellation.CancellationException
2125

2226
abstract 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

Comments
 (0)