Jetpack Compose এ Lifecycle-Aware Components সহজভাবে বোঝা

 

Jetpack Compose এ Lifecycle-Aware Components সহজভাবে বোঝা (বাংলায়)

Jetpack Compose হলো Android UI তৈরির নতুন Declarative পদ্ধতি। এতে XML-এর বদলে Composable ফাংশন ব্যবহার করে UI তৈরি করা হয়। কিন্তু একটা প্রশ্ন আসে— Composable ফাংশন গুলো কখন Create হয়, কখন Destroy হয়, আর এগুলো কীভাবে Lifecycle-aware হয়? 🤔


🎭 Lifecycle বললে কী বোঝায়?

একটা Activity বা Fragment এর জন্ম (Created), বেঁচে থাকা (Started/Resumed), আর ধ্বংস (Destroyed) হওয়াকে বলা হয় Lifecycle। যেমন—

  • Activity খুললে (onCreate) → UI তৈরি হয়
  • ব্যাকগ্রাউন্ডে গেলে (onPause) → কিছু বন্ধ হয়
  • Destroy হলে (onDestroy) → মেমরি ফ্রি হয়

আগে XML + ViewModel দিয়ে কাজ করলে LifecycleObserver ব্যবহার করতে হতো। কিন্তু Jetpack Compose এ কেমন হবে?


🌀 Jetpack Compose এ Lifecycle-Aware Components

Jetpack Compose এর Composable ফাংশন গুলো নিজেরা Lifecycle-aware নয়! 😲
তাহলে কীভাবে তারা Lifecycle-aware হয়? 🤔

🔑 সমাধান – Jetpack Compose এর কিছু স্পেশাল API ব্যবহার করতে হবে!


🛠 Jetpack Compose এর Lifecycle-Aware API গুলো

✅ ১. remember – মনে রাখা! 🧠

remember ফাংশন দিয়ে Composable রিকম্পোজ হলেও ডেটা হারাবে না!

@Composable
fun Counter() {
    var count by remember { mutableStateOf(0) }

    Button(onClick = { count++ }) {
        Text("Count: $count")
    }
}

📌 এই ক্ষেত্রে count প্রতি বার রিকম্পোজ হলেও হারাবে না!
📌 remember ছাড়া ব্যবহার করলে প্রতি বার নতুন count শুরু হতো! 😵


✅ ২. LaunchedEffect – একবারই চলবে! 🚀

এটা এমন কিছু কাজের জন্য লাগে, যা Composable প্রথমবার রান হলে একবারই চলবে। যেমন API কল, ডাটাবেজ থেকে ডেটা লোড করা ইত্যাদি।

@Composable
fun MyScreen() {
    LaunchedEffect(Unit) {
        println("এই কোড শুধু একবারই চলবে!")
    }
}

📌 Composable যতবারই রিকম্পোজ হোক, এটা শুধু একবারই রান হবে!


✅ ৩. DisposableEffect – কিছু ধ্বংস করার আগে পরিষ্কার করা! 🚦

এটা ব্যবহার হয় যখন Composable Destroy হওয়ার সময় কিছু ক্লিনআপ করতে হয়
উদাহরণঃ যদি কোনো Listener বা Sensor চালু থাকে, তাহলে তা বন্ধ করা দরকার

@Composable
fun MyComponent() {
    DisposableEffect(Unit) {
        println("Composable তৈরি হল!") 
        
        onDispose {
            println("Composable ধ্বংস হচ্ছে!")
        }
    }
}

📌 Composable যখন তৈরি হবে, তখন প্রথম println() রান হবে।
📌 কিন্তু যখন কম্পোনেন্ট ধ্বংস হবে, তখন onDispose কল হবে! 🚀


✅ ৪. rememberUpdatedState – নতুন ভ্যালু আপডেট রাখা! 🔄

এই API দিয়ে Composable এর ভিতরে ডেটা আপডেট থাকলেও, পুরানো State হারাবে না!

@Composable
fun TimerScreen(time: Int) {
    val updatedTime = rememberUpdatedState(time)

    LaunchedEffect(Unit) {
        delay(updatedTime.value.toLong() * 1000)
        println("সময় শেষ!")
    }
}

📌 নতুন time আপডেট হলে, পুরো LaunchedEffect নতুন করে রান হবে না, শুধু ডেটা আপডেট হবে!


🎯 Jetpack Compose এর Lifecycle-aware UI এর জন্য Best Practices

State ঠিক রাখতে remember ব্যবহার করো।
Async কাজের জন্য LaunchedEffect ব্যবহার করো।
Clean-up করতে হলে DisposableEffect ব্যবহার করো।
UI অপ্টিমাইজ করতে rememberUpdatedState ব্যবহার করো।


🔗 উপসংহার (মজার ভাষায় 📢)

Jetpack Compose UI কন্ট্রোল করে Lifecycle-aware API গুলো ব্যবহার করে স্মার্টভাবে।

  • remember → মনে রাখবে! 🤔
  • LaunchedEffect → একবারই চলবে! 🚀
  • DisposableEffect → শেষ মুহূর্তে কাজ গুছিয়ে নেবে! 🎭
  • rememberUpdatedState → নতুন ডেটা আপডেট হলেও Safe থাকবে! 🔄

এই টুলগুলো ভালোভাবে বুঝতে পারলে Jetpack Compose এ পারফেক্ট UI তৈরি করা সহজ হবে! 😍💡



So now tell me, do you understand? 😃

If you have any questions you can say, I will explain simply! 🚀✨

🛠 jetpack compose lifcycle-aaware ui best practices
✔ Viewmodel Use to manage data inside composable.
✔ LaunchedEfic or Remember keep the UI state correct.
✔ Cleanup Lifecycle-Aware with DisposableEfic.

🔗 Conclusion
Lifecycle-Aware component is easy to create in Jetpack Compose, but APIs like Remember, LaunchedEfic, Disposableeffect etc. need to be used properly. Understanding Lifecycle can make Smooth UI in compose! 🚀

If you have any questions you can ask! 😊

Comments

Popular posts from this blog

AI (Artificial Intelligence) সহজভাবে বোঝার জন্য একদম মস্তিষ্ক-বান্ধব ব্যাখ্যা 🧠🤖

🧠 Regex কী?

Kotlin-এ ভেরিয়েবল ঘোষণা করার দুই উপায়