From 0b01eb1bb34240ff1a559d3a19a0b5a98fe35b49 Mon Sep 17 00:00:00 2001 From: kari-ts Date: Thu, 31 Oct 2024 10:21:23 -0700 Subject: [PATCH] android: use a coroutine for loadfiles contentResolver.query is attempting to perform a network query on the main thread. Move this to a coroutine to prevent blocking. Fixes tailscale/corp#24293 Signed-off-by: kari-ts --- android/src/main/java/com/tailscale/ipn/ShareActivity.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/android/src/main/java/com/tailscale/ipn/ShareActivity.kt b/android/src/main/java/com/tailscale/ipn/ShareActivity.kt index efd3be7189..44a583770a 100644 --- a/android/src/main/java/com/tailscale/ipn/ShareActivity.kt +++ b/android/src/main/java/com/tailscale/ipn/ShareActivity.kt @@ -14,14 +14,18 @@ import androidx.activity.compose.setContent import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.ui.Modifier +import androidx.lifecycle.lifecycleScope import com.tailscale.ipn.ui.model.Ipn import com.tailscale.ipn.ui.theme.AppTheme import com.tailscale.ipn.ui.util.set import com.tailscale.ipn.ui.util.universalFit import com.tailscale.ipn.ui.view.TaildropView import com.tailscale.ipn.util.TSLog +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import kotlin.random.Random // ShareActivity is the entry point for Taildrop share intents @@ -47,7 +51,7 @@ class ShareActivity : ComponentActivity() { super.onStart() // Ensure our app instance is initialized App.get() - loadFiles() + lifecycleScope.launch { withContext(Dispatchers.IO) { loadFiles() } } } override fun onNewIntent(intent: Intent) {