Stop updating time when app is paused

This commit is contained in:
MM20 2023-03-06 13:29:14 +01:00
parent ea08584656
commit 3df44b2f22
No known key found for this signature in database
GPG Key ID: 0B61A8F2DEAFA389

View File

@ -7,6 +7,10 @@ import android.content.IntentFilter
import android.util.Log
import androidx.compose.runtime.*
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalLifecycleOwner
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.repeatOnLifecycle
import kotlinx.coroutines.awaitCancellation
@Composable
fun ProvideCurrentTime(content: @Composable () -> Unit) {
@ -15,18 +19,24 @@ fun ProvideCurrentTime(content: @Composable () -> Unit) {
var time by remember { mutableStateOf(System.currentTimeMillis()) }
DisposableEffect(null) {
val receiver = object : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
time = System.currentTimeMillis()
val lifecycleOwner = LocalLifecycleOwner.current
LaunchedEffect(null) {
lifecycleOwner.lifecycle.repeatOnLifecycle(Lifecycle.State.RESUMED) {
time = System.currentTimeMillis()
val receiver = object : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
time = System.currentTimeMillis()
}
}
context.registerReceiver(receiver, IntentFilter().apply {
addAction(Intent.ACTION_TIME_TICK)
addAction(Intent.ACTION_TIME_CHANGED)
})
try {
awaitCancellation()
} finally {
context.unregisterReceiver(receiver)
}
}
context.registerReceiver(receiver, IntentFilter().apply {
addAction(Intent.ACTION_TIME_TICK)
addAction(Intent.ACTION_TIME_CHANGED)
})
onDispose {
context.unregisterReceiver(receiver)
}
}