Фарқияти байни таъсироти LaunchedEffect ва DisposableEffect дар мавриди мақсад ва рафтор чӣ гуна аст?
sobes.tech AI
Ҷавоб аз AI
LaunchedEffect ва DisposableEffect — ин эффектҳо дар Jetpack Compose, ки кӯмак мекунанд дар идоракунии таъсирҳои тарафайн, аммо онҳо мақсадҳо ва рафторҳои гуногун доранд.
-
LaunchedEffect барои оғоз кардани корутинҳо истифода мешавад, ки бояд дар посух ба тағирёбии калидҳо иҷро шаванд (калидҳо — ин параметрҳоест, ки аз он таъсир вобаста аст). Вай автоматӣ бекор мешавад ва вақте ки калидҳо тағир меёбанд, дубора оғоз мешавад. Одатан барои амалиёти асинхронӣ, мисли боркунии маълумот ё оғоз кардани анимацияҳо, истифода мешавад.
-
DisposableEffect барои иҷрои таъсирҳои тарафайн, ки ниёз доранд, ки захираҳоро дар вақти нобудшавии таъсир озод кунанд. Он калидҳоро қабул мекунад ва функсияи тоза (dispose) баргардонанд, ки вақте таъсир дигар муҳим нест, даъват мешавад (масалан, вақте ки калидҳо тағир меёбанд ё компонент нобуд мешавад). Барои сабти шунавандагон, обунаҳо, озод кардани захираҳо истифода мешавад.
Масалан:
// LaunchedEffect барои оғоз кардани корутин дар тағирёбии userId
LaunchedEffect(userId) {
val data = repository.loadUser(userId)
// навсозии ҳолат
}
// DisposableEffect барои сабт ва бекор кардани шунаванда
DisposableEffect(sensorManager) {
val listener = object : SensorEventListener { /*...*/ }
sensorManager.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_NORMAL)
onDispose {
sensorManager.unregisterListener(listener)
}
}