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
Post a Comment