Sobes.tech
Junior — Middle

Məqsəd və davranış baxımından LaunchedEffect və DisposableEffect arasındakı fərq nədir?

sobes.tech Süni İntellekt

AI-dan cavab

LaunchedEffectDisposableEffect Jetpack Compose-də yan təsirləri idarə etməyə kömək edən effektlərdir, lakin onların müxtəlif məqsədləri və davranışları var.

  • LaunchedEffect açarların (açarlar, effektin asılı olduğu parametrlərdir) dəyişməsinə cavab olaraq korutinləri başlatmaq üçün istifadə olunur. O, avtomatik olaraq ləğv edilir və açarlar dəyişdikdə yenidən başlatılır. Adətən, məlumat yükləmə və ya animasiyaların başlaması kimi asinxron əməliyyatlar üçün istifadə olunur.

  • DisposableEffect effektin məhv edilməsi zamanı resursların sərbəst buraxılmasını tələb edən yan təsirləri yerinə yetirmək üçün nəzərdə tutulmuşdur. O, açarları qəbul edir və effekt artıq aktuallığını itirdikdə çağırılan təmizləmə funksiyasını (dispose) qaytarır. O, dinləyicilərin qeydiyyatı, abunəliklərin idarə olunması və resursların sərbəst buraxılması üçün istifadə olunur.

Nümunə:

// userId dəyişdikdə korutin başlatmaq üçün LaunchedEffect
LaunchedEffect(userId) {
    val data = repository.loadUser(userId)
    // vəziyyəti yeniləyin
}

// Dinləyicini qeydiyyatdan keçirmək və ləğv etmək üçün DisposableEffect
DisposableEffect(sensorManager) {
    val listener = object : SensorEventListener { /*...*/ }
    sensorManager.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_NORMAL)
    onDispose {
        sensorManager.unregisterListener(listener)
    }
}