Android: ContentResolver AddStatusChangelistener не работает в JetPack ComposeAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Android: ContentResolver AddStatusChangelistener не работает в JetPack Compose

Сообщение Anonymous »

Я пытаюсь переписать свой старый код в JetPack Compose, но у меня проблемы с ContentResolver.AddStatusChangelistener, который не запускает события синхронизации. Я использую одну и ту же бизнес -логику (ViewModel, Repository) как для - классический пользовательский интерфейс, так и для Compose, но в Compose она не работает.
Вот классический код пользовательского интерфейса:
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>
И вот как это выглядит в Compose (это почти тот же подход, который упоминался в API -интерфейсах Docs: Feelsectionability): < /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>
И он используется в разных композитных, как это: < /p>
SyncStatusManager {
Timber.d("sync event should be fired, but it's not")
}
< /code>
Я попытался использовать запуск Effect, или нет вообще не эффекты, но без успеха. Когда я запускаю синхронизацию, обратный вызов должен немедленно стрелять, но это не так.
Я что -то упускаю? Я новичок в JetPack Compose. Спасибо
(необходимые разрешения предоставляются в обоих случаях) < /p>

Подробнее здесь: https://stackoverflow.com/questions/753 ... ck-compose
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»