diff --git a/app/src/main/kotlin/cn/xihan/qdds/MainActivity.kt b/app/src/main/kotlin/cn/xihan/qdds/MainActivity.kt index 1b6b084..4c16db8 100644 --- a/app/src/main/kotlin/cn/xihan/qdds/MainActivity.kt +++ b/app/src/main/kotlin/cn/xihan/qdds/MainActivity.kt @@ -68,10 +68,12 @@ import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.material3.TextField import androidx.compose.runtime.Composable +import androidx.compose.runtime.DisposableEffect import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.MutableState import androidx.compose.runtime.getValue import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -94,6 +96,7 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.compose.ui.zIndex import androidx.lifecycle.Lifecycle +import androidx.lifecycle.LifecycleEventObserver import androidx.navigation.NavGraph.Companion.findStartDestination import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable @@ -112,6 +115,7 @@ import com.highcapable.yukihookapi.hook.xposed.parasitic.activity.base.ModuleApp import com.hjq.permissions.Permission import com.hjq.permissions.XXPermissions import kotlinx.coroutines.delay +import kotlinx.coroutines.launch import java.text.SimpleDateFormat import java.util.Locale @@ -1139,14 +1143,25 @@ fun Disclaimers( displayButton: Boolean = true, ) { var remainingTime by rememberSavableMutableStateOf(value = 30L) + val coroutineScope = rememberCoroutineScope() val context = LocalContext.current + val lifecycleOwner = LocalLifecycleOwner.current if (displayButton) { - val isActive = - LocalLifecycleOwner.current.lifecycle.currentState.isAtLeast(Lifecycle.State.STARTED) - LaunchedEffect(isActive) { - while (isActive && remainingTime > 0) { - delay(1000) - remainingTime.takeUnless { it == 0L }?.let { remainingTime-- } + DisposableEffect(lifecycleOwner) { + val observer = LifecycleEventObserver { _, event -> + if (event == Lifecycle.Event.ON_RESUME) { + coroutineScope.launch { + while (remainingTime > 0) { + delay(1000) + remainingTime.takeUnless { it == 0L }?.let { remainingTime-- } + } + } + } + } + lifecycleOwner.lifecycle.addObserver(observer) + + onDispose { + lifecycleOwner.lifecycle.removeObserver(observer) } } }