Ich versuche, meinen alten Code in Jetpack Compose neu zu schreiben, aber ich habe Probleme mit ContentResolver.AddStatuschAngelistener, der keine Synchronisierungsereignisse abfeuert. Ich verwende dieselbe Geschäftslogik (ViewModel, Repository) für sowohl klassische Benutzeroberfläche als auch komponieren, aber im Komponieren funktioniert es nicht.
Hier ist der klassische UI -Code:
private var syncStatusHandle: Any? = null
override fun onResume() {
super.onResume()
syncStatusHandle = ContentResolver.addStatusChangeListener(
ContentResolver.SYNC_OBSERVER_TYPE_ACTIVE or ContentResolver.SYNC_OBSERVER_TYPE_PENDING
)
{
Timber.d("sync event fired")
}
}
override fun onPause() {
super.onPause()
if (syncStatusHandle != null) {
ContentResolver.removeStatusChangeListener(syncStatusHandle)
}
}
< /code>
Und hier ist, wie es in Kompose aussieht (es ist so ziemlich der gleiche Ansatz, wie in den Dokumenten erwähnt: Interoperabilitäts -APIs): < /p>
@Composable
fun SyncStatusManager(
onSyncEvent: (count: Int) -> Unit
) {
val context = LocalContext.current
val currentOnSyncEvent by rememberUpdatedState(onSyncEvent)
DisposableEffect(context) {
val syncStatusHandle = ContentResolver.addStatusChangeListener(
ContentResolver.SYNC_OBSERVER_TYPE_ACTIVE or ContentResolver.SYNC_OBSERVER_TYPE_PENDING
)
{
currentOnSyncEvent(it)
}
onDispose {
ContentResolver.removeStatusChangeListener(syncStatusHandle)
}
}
}
< /code>
und es wird in verschiedenen komponierbaren wie folgt verwendet: < /p>
SyncStatusManager {
Timber.d("sync event should be fired, but it's not")
}
< /code>
Ich habe versucht, StartEffect zu verwenden oder überhaupt nicht, aber kein Erfolg. Wenn ich die Synchronisation auslöste, sollte der Rückruf sofort abfeuern, aber es nicht.
Fehlt mir etwas? Ich bin neu bei Jetpack Compose. Vielen Dank an
(in beiden Fällen werden die erforderlichen Berechtigungen erteilt) < /p) < /p>
Ich versuche, meinen alten Code in Jetpack Compose neu zu schreiben, aber ich habe Probleme mit ContentResolver.AddStatuschAngelistener, der keine Synchronisierungsereignisse abfeuert. Ich verwende dieselbe Geschäftslogik (ViewModel, Repository) für sowohl klassische Benutzeroberfläche als auch komponieren, aber im Komponieren funktioniert es nicht. Hier ist der klassische UI -Code: private var syncStatusHandle: Any? = null
override fun onResume() { super.onResume() syncStatusHandle = ContentResolver.addStatusChangeListener( ContentResolver.SYNC_OBSERVER_TYPE_ACTIVE or ContentResolver.SYNC_OBSERVER_TYPE_PENDING ) { Timber.d("sync event fired") } }
override fun onPause() { super.onPause() if (syncStatusHandle != null) { ContentResolver.removeStatusChangeListener(syncStatusHandle) } } < /code> Und hier ist, wie es in Kompose aussieht (es ist so ziemlich der gleiche Ansatz, wie in den Dokumenten erwähnt: Interoperabilitäts -APIs): < /p> @Composable fun SyncStatusManager( onSyncEvent: (count: Int) -> Unit ) { val context = LocalContext.current val currentOnSyncEvent by rememberUpdatedState(onSyncEvent) DisposableEffect(context) { val syncStatusHandle = ContentResolver.addStatusChangeListener( ContentResolver.SYNC_OBSERVER_TYPE_ACTIVE or ContentResolver.SYNC_OBSERVER_TYPE_PENDING ) { currentOnSyncEvent(it) }
onDispose { ContentResolver.removeStatusChangeListener(syncStatusHandle) } } } < /code> und es wird in verschiedenen komponierbaren wie folgt verwendet: < /p> SyncStatusManager { Timber.d("sync event should be fired, but it's not") } < /code> Ich habe versucht, StartEffect zu verwenden oder überhaupt nicht, aber kein Erfolg. Wenn ich die Synchronisation auslöste, sollte der Rückruf sofort abfeuern, aber es nicht. Fehlt mir etwas? Ich bin neu bei Jetpack Compose. Vielen Dank an (in beiden Fällen werden die erforderlichen Berechtigungen erteilt) < /p) < /p>
In einem neuen Android Compose-Projekt mit material3 versuche ich, focusLabelColor von OutlinedTextField wie folgt festzulegen, aber es hat nicht funktioniert, es sei denn, ich habe die Farbe für...
In einem neuen Android Compose-Projekt mit material3 versuche ich, focusLabelColor von OutlinedTextField wie folgt festzulegen, aber es hat nicht funktioniert, es sei denn, ich habe die Farbe für...
In einem neuen Android Compose-Projekt mit material3 versuche ich, focusLabelColor von OutlinedTextField wie folgt festzulegen, aber es hat nicht funktioniert, es sei denn, ich habe die Farbe für...
Ich versuche, in meiner App ein Swiper -Element zu erstellen, das sich wie die Swiper -Apple -Telefone verhält, wenn sie einen Anruf aufholen. In diesem Prozess habe ich Zeigereingaben und Offset...
Ich versuche, in meiner App ein Swiper -Element zu erstellen, das sich wie die Swiper -Apple -Telefone verhält, wenn sie einen Anruf aufholen. In diesem Prozess habe ich Zeigereingaben und Offset...