LaunchedEffect жана DisposableEffect эффекттеринин максаты жана жүрүм-туруму боюнча кандай айырма бар?
sobes.tech AI
AIден жооп
LaunchedEffect жана DisposableEffect Jetpack Compose'деги эффекттер болуп саналат, алар жанама таасирлерди башкарууга жардам берет, бирок алардын ар башка максаттары жана жүрүм-турумдары бар.
-
LaunchedEffect ачкычтардын (ачкычтар — эффектке көз каранды параметрлер) өзгөрүшүнө жооп катары корутиндерди ишке киргизүү үчүн колдонулат. Ал автоматтык түрдө токтотулат жана ачкычтар өзгөргөндө кайра ишке киргизилет. Адатта, ал асинхрондук операциялар үчүн колдонулат, мисалы, маалыматтарды жүктөө же анимацияларды баштоо.
-
DisposableEffect эффекттин жоголушунда ресурстарды бошотуу талап кылынган жанама таасирлерди аткаруу үчүн арналган. Ал ачкычтарды кабыл алат жана эффект актуалдуу болбой калганда (мисалы, ачкычтар өзгөргөндө же компонент жок кылынганда) чакырылуучу тазалоо функциясын (dispose) кайтарат. Ал тыңчыларды каттоо, жазылууларды башкаруу, ресурстарды бошотуу үчүн колдонулат.
Мисал:
// userId өзгөргөндө корутинди ишке киргизүү үчүн LaunchedEffect
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)
}
}