analysis: ANR test fix

This commit is contained in:
Thibault Deckers 2024-07-08 23:06:51 +02:00
parent 8cb75f96b5
commit 91e6ac1d88

View file

@ -27,6 +27,10 @@ import deckers.thibault.aves.utils.LogUtils
import io.flutter.embedding.engine.FlutterEngine import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodCall import io.flutter.plugin.common.MethodCall
import io.flutter.plugin.common.MethodChannel import io.flutter.plugin.common.MethodChannel
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.SupervisorJob
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking import kotlinx.coroutines.runBlocking
import kotlin.coroutines.Continuation import kotlin.coroutines.Continuation
import kotlin.coroutines.resume import kotlin.coroutines.resume
@ -34,13 +38,17 @@ import kotlin.coroutines.resumeWithException
import kotlin.coroutines.suspendCoroutine import kotlin.coroutines.suspendCoroutine
class AnalysisWorker(context: Context, parameters: WorkerParameters) : CoroutineWorker(context, parameters) { class AnalysisWorker(context: Context, parameters: WorkerParameters) : CoroutineWorker(context, parameters) {
private val defaultScope = CoroutineScope(SupervisorJob() + Dispatchers.Default)
private var workCont: Continuation<Any?>? = null private var workCont: Continuation<Any?>? = null
private var flutterEngine: FlutterEngine? = null private var flutterEngine: FlutterEngine? = null
private var backgroundChannel: MethodChannel? = null private var backgroundChannel: MethodChannel? = null
override suspend fun doWork(): Result { override suspend fun doWork(): Result {
createNotificationChannel() defaultScope.launch {
setForeground(createForegroundInfo()) // prevent ANR triggered by slow operations in main thread
createNotificationChannel()
setForeground(createForegroundInfo())
}
suspendCoroutine { cont -> suspendCoroutine { cont ->
workCont = cont workCont = cont
onStart() onStart()