LaunchedEffect va DisposableEffect o'rtasidagi ma'no va xulq-atvor bo'yicha qanday farq bor?
sobes.tech AI
AIdan javob
LaunchedEffect va DisposableEffect Jetpack Compose'da yonaltirilgan effektlar bo'lib, ular yordamida yon ta'sirlarni boshqarish mumkin, ammo ular turli maqsadlar va xususiyatlarga ega.
-
LaunchedEffect kluchlarning (kluchlar - effektga bog'liq bo'lgan parametrlar) o'zgarishiga javoban korutinlarni ishga tushirish uchun ishlatiladi. U avtomatik ravishda bekor qilinadi va kluchlar o'zgarganda qayta ishga tushiriladi. Asosan, ma'lumotlarni yuklash yoki animatsiyalarni boshlash kabi asinxron operatsiyalar uchun qo'llaniladi.
-
DisposableEffect effektlarni bajarish uchun mo'ljallangan bo'lib, ular resurslarni tozalashni talab qiladigan holatlarda ishlatiladi. U kluchlarni qabul qiladi va tozalash funksiyasini (dispose) qaytaradi, bu funksiya effekt dolzarb bo'lib qolmay qolganida (masalan, kluchlar o'zgarganda yoki komponent o'lik qolganda) chaqiriladi. U tinglovchilarni ro'yxatdan o'tkazish, obunalarni boshqarish, resurslarni bo'shatish uchun ishlatiladi.
Misol:
// userId o'zgarganda korutin ishga tushirish uchun LaunchedEffect
LaunchedEffect(userId) {
val data = repository.loadUser(userId)
// holatni yangilash
}
// Tinglovchini ro'yxatdan o'tkazish va bekor qilish uchun DisposableEffect
DisposableEffect(sensorManager) {
val listener = object : SensorEventListener { /*...*/ }
sensorManager.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_NORMAL)
onDispose {
sensorManager.unregisterListener(listener)
}
}