🚀 CoroutineScope in Jetpack Compose - āϏāĻšāϜ āĻ­াāώা⧟ āĻŦোāĻাāϰ āĻ—াāχāĻĄ

 

🚀 CoroutineScope in Jetpack Compose - āϏāĻšāϜ āĻ­াāώা⧟ āĻŦোāĻাāϰ āĻ—াāχāĻĄ

Jetpack Compose-āĻ CoroutineScope āĻšāϞো āĻŦ্āϝাāĻ•āĻ—্āϰাāωāύ্āĻĄ āϟাāϏ্āĻ• āϚাāϞাāύোāϰ āϜāύ্āϝ āĻŦিāĻļেāώāĻ­াāĻŦে āĻŦ্āϝāĻŦāĻšৃāϤ āĻāĻ•āϟি āϟুāϞ

āφāĻĒāύি āϝāĻĻি āĻāĻŽāύ āĻ•াāϜ āĻ•āϰāϤে āϚাāύ āϝা āĻĻীāϰ্āϘāϏāĻŽā§Ÿ āϚāϞāĻŦে (āϝেāĻŽāύ: API āĻ•āϞ, āĻĄাāϟাāĻŦেāϜ āĻ…āĻĒাāϰেāĻļāύ, āĻŦা āϟাāχāĻŽাāϰ āϚাāϞাāύো) āĻ•িāύ্āϤু UI āĻŦ্āϞāĻ• āĻ•āϰāĻŦে āύা, āϤাāĻšāϞে CoroutineScope āĻŦ্āϝāĻŦāĻšাāϰ āĻ•āϰāϤে āĻšāĻŦে! ✅


đŸ”Ĩ CoroutineScope āĻ•ী?

āĻāĻ•āϟি CoroutineScope āĻŽূāϞāϤ Coroutine āϚাāϞাāύোāϰ āϜāύ্āϝ āĻāĻ•āϟি āĻ•āύ্āϟেāχāύাāϰ। āφāĻĒāύি āϝāĻ–āύ Coroutine āϚাāϞাāύ, āϤāĻ–āύ āϏেāϟা āĻāĻ•āϟি āύিāϰ্āĻĻিāώ্āϟ Scope-āĻāϰ āĻŽāϧ্āϝে āϚāϞāĻŦে

āĻ•েāύ āĻĻāϰāĻ•াāϰ?
✔ UI āĻŦ্āϞāĻ• āύা āĻ•āϰে āĻŦ্āϝাāĻ•āĻ—্āϰাāωāύ্āĻĄে āĻ•াāϜ āϚাāϞাāύোāϰ āϜāύ্āϝ
✔ āĻŦāĻĄ় āĻ•াāϜāĻ—ুāϞোāĻ•ে āφāϞাāĻĻা āĻĨ্āϰেāĻĄে āϚাāϞি⧟ে āĻ…্āϝাāĻĒāĻ•ে āĻĢাāϏ্āϟ āĻ•āϰাāϰ āϜāύ্āϝ
✔ āĻŽেāĻŽোāϰি āϞিāĻ• (Memory Leak) āĻ•āĻŽাāύোāϰ āϜāύ্āϝ


đŸŽ¯ CoroutineScope Jetpack Compose-āĻ āĻ•িāĻ­াāĻŦে āĻ•াāϜ āĻ•āϰে?

Jetpack Compose-āĻ, Coroutine āϚাāϞাāύোāϰ āϜāύ্āϝ āϏাāϧাāϰāĻŖāϤ rememberCoroutineScope() āĻŦা LaunchedEffect() āĻŦ্āϝāĻŦāĻšাāϰ āĻ•āϰা āĻšā§Ÿ

1️⃣ rememberCoroutineScope() - UI āχāĻ­েāύ্āϟেāϰ āϜāύ্āϝ

āφāĻĒāύাāϰ UI-āϤে āϝāĻĻি āĻ•োāύো āĻŦোāϤাāĻŽ āϚাāĻĒāϞে Coroutine āϚাāϞাāϤে āϚাāύ, āϤাāĻšāϞে rememberCoroutineScope() āĻŦ্āϝāĻŦāĻšাāϰ āĻ•āϰāĻŦেāύ।

@Composable
fun MyButton() {
    val coroutineScope = rememberCoroutineScope()

    Button(onClick = {
        coroutineScope.launch {
            delay(2000) // 2 āϏেāĻ•েāύ্āĻĄ āĻ…āĻĒেāĻ•্āώা āĻ•āϰāĻŦে
            println("Button clicked!")
        }
    }) {
        Text("Click Me")
    }
}

📌 āĻāϟি āĻ•ী āĻ•āϰāĻŦে?
✔ āϝāĻ–āύ āĻŦোāϤাāĻŽ āϚাāĻĒা āĻšāĻŦে, āϤāĻ–āύ ⧍ āϏেāĻ•েāύ্āĻĄ āĻĒāϰ "Button clicked!" āĻĒ্āϰিāύ্āϟ āĻšāĻŦে
✔ UI āĻŦ্āϞāĻ• āĻšāĻŦে āύা!


2️⃣ LaunchedEffect() - āĻ•āĻŽ্āĻĒোāϜেāĻŦāϞ āϞোāĻĄ āĻšāϞে āĻ…āϟোāĻŽেāϟিāĻ• āϚাāϞাāύোāϰ āϜāύ্āϝ

āφāĻĒāύি āϝāĻĻি āϚাāύ āĻāĻ•āϟি āϏ্āĻ•্āϰিāύ āĻ“āĻĒেāύ āĻšāĻŦাāϰ āϏাāĻĨে āϏাāĻĨে Coroutine āϚাāϞু āĻšোāĻ•, āϤাāĻšāϞে LaunchedEffect() āĻŦ্āϝāĻŦāĻšাāϰ āĻ•āϰāĻŦেāύ।

@Composable
fun MyScreen() {
    LaunchedEffect(Unit) {
        delay(3000) // 3 āϏেāĻ•েāύ্āĻĄ āĻ…āĻĒেāĻ•্āώা āĻ•āϰāĻŦে
        println("Screen Loaded!")
    }

    Text("Welcome to My App")
}

📌 āĻāϟি āĻ•ী āĻ•āϰāĻŦে?
āϏ্āĻ•্āϰিāύ āϞোāĻĄ āĻšāĻ“āϝ়াāϰ āĻĒāϰ ā§Š āϏেāĻ•েāύ্āĻĄ āĻ…āĻĒেāĻ•্āώা āĻ•āϰে "Screen Loaded!" āĻĒ্āϰিāύ্āϟ āĻ•āϰāĻŦে
UI āĻŦ্āϞāĻ• āĻšāĻŦে āύা!


3️⃣ viewModelScope - ViewModel āĻāϰ āĻŽāϧ্āϝে Coroutine āϚাāϞাāύোāϰ āϜāύ্āϝ

āϝāĻĻি Coroutine āϚাāϞাāϤে āĻšā§Ÿ ViewModel āĻāϰ āĻŽāϧ্āϝে, āϤাāĻšāϞে viewModelScope āĻŦ্āϝāĻŦāĻšাāϰ āĻ•āϰāϤে āĻšāĻŦে।

class MyViewModel : ViewModel() {
    fun fetchData() {
        viewModelScope.launch {
            delay(2000)
            println("Data Loaded!")
        }
    }
}

📌 āĻāϟি āĻ•ী āĻ•āϰāĻŦে?
✔ ViewModel āĻāϰ āĻŽāϧ্āϝে Coroutine āϚাāϞাāĻŦে ✅
ViewModel Destroy āĻšāϞে Coroutine āĻ…āϟোāĻŽেāϟিāĻ• āĻŦাāϤিāϞ āĻšāĻŦে (Cancel āĻšāĻŦে), āĻĢāϞে āĻŽেāĻŽোāϰি āϞিāĻ• āĻšāĻŦে āύা!


4️⃣ rememberUpdatedState() - āϝāĻ–āύ UI āϰিāĻĢ্āϰেāĻļ āĻšā§Ÿ, āϤāĻ–āύāĻ“ Coroutine āĻāϰ āĻŽāϧ্āϝে āϞেāϟেāϏ্āϟ āĻ­্āϝাāϞু āĻĒেāϤে

@Composable
fun TimerScreen(countdownTime: Int) {
    val currentTime = rememberUpdatedState(countdownTime)

    LaunchedEffect(Unit) {
        while (currentTime.value > 0) {
            delay(1000)
            println("Countdown: ${currentTime.value}")
        }
    }

    Text("Time Left: ${currentTime.value}")
}

📌 āĻāϟি āĻ•ী āĻ•āϰāĻŦে?
countdownTime āφāĻĒāĻĄেāϟ āĻšāϞেāĻ“, Coroutine āϞেāϟেāϏ্āϟ āĻ­্āϝাāϞু āχāωāϜ āĻ•āϰāĻŦে


🎭 CoroutineScope-āĻ Dispatcher āĻ•ীāĻ­াāĻŦে āĻ•াāϜ āĻ•āϰে?

CoroutineScope-āĻāϰ āĻ•াāϜ āĻ•āϰাāϰ āϧāϰāύ āύি⧟āύ্āϤ্āϰāĻŖ āĻ•āϰা āϝা⧟ Dispatcher āĻĻি⧟ে

Dispatcher āĻ•াāϜ
Dispatchers.Main UI-āϤে āĻ•াāϜ āĻ•āϰাāϰ āϜāύ্āϝ (āϝেāĻŽāύ Text āĻĒāϰিāĻŦāϰ্āϤāύ āĻ•āϰা)
Dispatchers.IO āĻŦ্āϝাāĻ•āĻ—্āϰাāωāύ্āĻĄ āϟাāϏ্āĻ• āϚাāϞাāύোāϰ āϜāύ্āϝ (āϝেāĻŽāύ API āĻ•āϞ, āĻĄাāϟাāĻŦেāϜ āĻ…āĻĒাāϰেāĻļāύ)
Dispatchers.Default āĻšেāĻ­ি āĻ•āĻŽ্āĻĒিāωāϟেāĻļāύাāϞ āĻ•াāϜ (āϝেāĻŽāύ āĻŦ⧜ āϞুāĻĒ āĻŦা āĻšিāϏাāĻŦ-āύিāĻ•াāĻļ)
coroutineScope.launch(Dispatchers.IO) {
    val data = fetchDataFromAPI()
    withContext(Dispatchers.Main) {
        println("Data Loaded: $data") // UI-āϤে āĻĻেāĻ–াāύোāϰ āϜāύ্āϝ Main Thread-āĻ āĻĒাāĻ াāϚ্āĻ›ে
    }
}

📌 āĻāϟি āĻ•ী āĻ•āϰāĻŦে?
✔ API āĻ•āϞ IO Thread-āĻ āϚাāϞাāĻŦে
Main Thread-āĻ āĻĢিāϰে āĻāϏে UI āφāĻĒāĻĄেāϟ āĻ•āϰāĻŦে


đŸŽ¯ Jetpack Compose-āĻ CoroutineScope āĻŦ্āϝāĻŦāĻšাāϰেāϰ āĻ­াāϞো āĻĒ্āϰ্āϝাāĻ•āϟিāϏ

✅ UI āχāĻ­েāύ্āϟেāϰ āϜāύ্āϝ rememberCoroutineScope() āĻŦ্āϝāĻŦāĻšাāϰ āĻ•āϰুāύ
✅ āϏ্āĻ•্āϰিāύ āϞোāĻĄ āĻšāϞে LaunchedEffect() āĻŦ্āϝāĻŦāĻšাāϰ āĻ•āϰুāύ
✅ ViewModel āĻāϰ āĻŽāϧ্āϝে Coroutine āϚাāϞাāύোāϰ āϜāύ্āϝ viewModelScope āĻŦ্āϝāĻŦāĻšাāϰ āĻ•āϰুāύ
✅ āĻŦ্āϝাāĻ•āĻ—্āϰাāωāύ্āĻĄ āĻ•াāϜেāϰ āϜāύ্āϝ Dispatchers.IO āĻŦ্āϝāĻŦāĻšাāϰ āĻ•āϰুāύ
✅ UI āφāĻĒāĻĄেāϟেāϰ āϜāύ্āϝ Dispatchers.Main āĻŦ্āϝāĻŦāĻšাāϰ āĻ•āϰুāύ


🏆 āĻļেāώ āĻ•āĻĨা

Jetpack Compose-āĻ CoroutineScope āĻŦ্āϝāĻŦāĻšাāϰ āĻ•āϰāϞে āĻŦ্āϝাāĻ•āĻ—্āϰাāωāύ্āĻĄ āĻ•াāϜ āϏāĻšāϜে āĻ•āϰা āϝা⧟ āĻāĻŦং UI āϞ্āϝাāĻ— āĻšā§Ÿ āύা! 🚀đŸ”Ĩ

āφāĻĒāύি āĻāĻ–āύ āϜাāύেāύ:
rememberCoroutineScope() - UI āχāĻ­েāύ্āϟেāϰ āϜāύ্āϝ
LaunchedEffect() - āϏ্āĻ•্āϰিāύ āϞোāĻĄ āĻšāϞে Coroutine āϚাāϞাāύোāϰ āϜāύ্āϝ
viewModelScope - ViewModel āĻĨেāĻ•ে Coroutine āϚাāϞাāύোāϰ āϜāύ্āϝ
Dispatchers - Coroutine āĻ•োāĻĨা⧟ āϚাāϞাāϤে āĻšāĻŦে āϤা āύিāϰ্āϧাāϰāĻŖ āĻ•āϰāϤে

āĻāĻ–āύ āφāĻĒāύি CoroutineScope āĻŦ্āϝāĻŦāĻšাāϰ āĻ•āϰে Jetpack Compose-āĻ Smooth & Responsive UI āϤৈāϰি āĻ•āϰāϤে āĻĒাāϰāĻŦেāύ! 🎨✨

Comments

Popular posts from this blog

AI (Artificial Intelligence) āϏāĻšāϜāĻ­াāĻŦে āĻŦোāĻাāϰ āϜāύ্āϝ āĻāĻ•āĻĻāĻŽ āĻŽāϏ্āϤিāώ্āĻ•-āĻŦাāύ্āϧāĻŦ āĻŦ্āϝাāĻ–্āϝা 🧠🤖

🧠 Regex āĻ•ী?

Kotlin-āĻ āĻ­েāϰিāϝ়েāĻŦāϞ āϘোāώāĻŖা āĻ•āϰাāϰ āĻĻুāχ āωāĻĒাāϝ়