通知が有効になっているかどうか調べる処理 (NotificationManagerCompat.from(context).areNotificationsEnabled()) を毎 onResume で行い場合はこんな感じになる。
@Composable
fun SampleScreen(
notificationEnabled: Boolean,
onCheckNotification: () -> Unit
) {
val lifecycleObserver = remember(onCheckNotification) {
LifecycleEventObserver { _, event ->
if (event == Lifecycle.Event.ON_RESUME) {
onCheckNotification()
}
}
}
val lifecycle = LocalLifecycleOwner.current.lifecycle
DisposableEffect(lifecycle) {
lifecycle.addObserver(lifecycleObserver)
onDispose {
lifecycle.removeObserver(lifecycleObserver)
}
}
if (!notificationEnabled) {
Text("通知設定がオフです")
}
}
state hoisting だとこんな感じだけど、引数 ViewModel にするならこんな感じ。
@Composable
fun SampleScreen(
viewModel: SampleViewModel = viewModel(),
) {
val lifecycleObserver = remember(viewModel) {
LifecycleEventObserver { _, event ->
if (event == Lifecycle.Event.ON_RESUME) {
viewModel.updateNotificationEnabledState()
}
}
}
val lifecycle = LocalLifecycleOwner.current.lifecycle
DisposableEffect(lifecycle) {
lifecycle.addObserver(lifecycleObserver)
onDispose {
lifecycle.removeObserver(lifecycleObserver)
}
}
if (!viewModel.notificationEnabled.value) {
Text("通知設定がオフです")
}
}
0 件のコメント:
コメントを投稿