🔍 LiveData vs MutableLiveData

 

🔍 LiveData vs MutableLiveData

LiveData āĻāĻŦং MutableLiveData āĻĻুāϟোāχ Android Architecture Components-āĻāϰ āĻ…ংāĻļ, āϝা MVVM (Model-View-ViewModel) āĻĒ্āϝাāϟাāϰ্āύে āĻŦ্āϝāĻŦāĻšৃāϤ āĻšā§Ÿ UI āĻāĻŦং data āϏāĻ িāĻ•āĻ­াāĻŦে āĻŽ্āϝাāύেāϜ āĻ•āϰাāϰ āϜāύ্āϝ।

👉 āĻŽূāϞ āĻĒাāϰ্āĻĨāĻ•্āϝ:

  • LiveDataāĻļুāϧুāĻŽাāϤ্āϰ observe āĻ•āϰা āϝা⧟, āĻ•িāύ্āϤু āĻĒāϰিāĻŦāϰ্āϤāύ (update) āĻ•āϰা āϝা⧟ āύা।
  • MutableLiveDataobserve āĻ•āϰা āϝা⧟ + āĻĒāϰিāĻŦāϰ্āϤāύāĻ“ āĻ•āϰা āϝা⧟ (update āĻ•āϰা āϝা⧟)।

đŸŸĸ LiveData (āĻļুāϧু āĻĒ⧜া āϝাāĻŦে, āĻĒāϰিāĻŦāϰ্āϤāύ āĻ•āϰা āϝাāĻŦে āύা)

LiveData āĻšāϞো āĻāĻ•āϟি āĻ…āĻŦāϜাāϰāĻ­েāĻŦāϞ āĻĄেāϟা āĻšোāϞ্āĻĄাāϰ āĻ•্āϞাāϏ, āϝা UI lifecycle-aware āĻāĻŦং UI-āĻāϰ āϏাāĻĨে āĻ…āϟোāĻŽেāϟিāĻ• āφāĻĒāĻĄেāϟ āĻšā§Ÿ।

āĻ•āĻ–āύ āĻŦ্āϝāĻŦāĻšাāϰ āĻ•āϰāĻŦো?

📌 āϝāĻ–āύ āĻļুāϧু observe āĻ•āϰāϤে āĻšāĻŦে, āĻ•িāύ্āϤু modify āĻ•āϰāϤে āĻšāĻŦে āύা।
📌 ViewModel āĻĨেāĻ•ে UI-āĻāϰ āĻ•াāĻ›ে āĻĄেāϟা āĻĒাāĻ াāύোāϰ āϜāύ্āϝ।

āωāĻĻাāĻšāϰāĻŖ:

class MyViewModel : ViewModel() {
    private val _message = MutableLiveData<String>("Hello, World!")  // MutableLiveData
    val message: LiveData<String> = _message  // āĻļুāϧুāĻŽাāϤ্āϰ observe āĻ•āϰাāϰ āϜāύ্āϝ LiveData
}

📌 āĻāĻ–াāύে, _message āĻšāϞো MutableLiveData, āϝেāϟা āĻĒāϰিāĻŦāϰ্āϤāύ āĻ•āϰা āϝাāĻŦে।
📌 āĻ•িāύ্āϤু message āĻšāϞো LiveData, āϝেāϟা āĻļুāϧু observe āĻ•āϰা āϝাāĻŦে, āĻĒāϰিāĻŦāϰ্āϤāύ āĻ•āϰা āϝাāĻŦে āύা।


đŸ”ĩ MutableLiveData (āĻĒāϰিāĻŦāϰ্āϤāύ āĻ•āϰা āϝাāĻŦে)

👉 MutableLiveData āĻšāϞো LiveData-āĻāϰ child class, āϝা observe āĻ•āϰা āϝাāĻŦে + āĻĒāϰিāĻŦāϰ্āϤāύ āĻ•āϰা āϝাāĻŦে

āĻ•āĻ–āύ āĻŦ্āϝāĻŦāĻšাāϰ āĻ•āϰāĻŦো?

📌 āϝāĻ–āύ āĻĄেāϟা āĻĒāϰিāĻŦāϰ্āϤāύ āĻ•āϰāϤে āĻšāĻŦে (update āĻ•āϰāϤে āĻšāĻŦে)।
📌 āϝāĻ–āύ ViewModel āĻŦা Repository āĻĨেāĻ•ে āĻĄেāϟা āĻŽāĻĄিāĻĢাāχ āĻ•āϰāϤে āĻšāĻŦে।

āωāĻĻাāĻšāϰāĻŖ:

class MyViewModel : ViewModel() {
    val count = MutableLiveData<Int>(0)  // āĻĄেāϟা āĻĒāϰিāĻŦāϰ্āϤāύ āĻ•āϰা āϝাāĻŦে

    fun incrementCount() {
        count.value = (count.value ?: 0) + 1  // āύāϤুāύ āĻŽাāύ āϏেāϟ āĻ•āϰা āĻšāϚ্āĻ›ে
    }
}

📌 āĻāĻ–াāύে, count āĻšāϞো MutableLiveData, āϝা āĻĒāϰিāĻŦāϰ্āϤāύ āĻ•āϰা āϝাāĻŦে।
📌 incrementCount() āĻŽেāĻĨāĻĄ āĻ•āϞ āĻ•āϰāϞে āύāϤুāύ āĻŽাāύ āϏেāϟ āĻ•āϰা āĻšāĻŦে।


🚀 āϏংāĻ•্āώেāĻĒে āĻĒাāϰ্āĻĨāĻ•্āϝ:

Feature LiveData MutableLiveData
āĻĒāϰিāĻŦāϰ্āϤāύ āĻ•āϰা āϝা⧟? ❌ āύা (immutable) ✅ āĻš্āϝাঁ (mutable)
observe āĻ•āϰা āϝা⧟? ✅ āĻš্āϝাঁ ✅ āĻš্āϝাঁ
ViewModel āĻĨেāĻ•ে āĻĄেāϟা āĻĒাāĻ াāύো āϝা⧟? ✅ āĻš্āϝাঁ ✅ āĻš্āϝাঁ
ViewModel āĻĨেāĻ•ে āĻĄেāϟা āĻĒāϰিāĻŦāϰ্āϤāύ āĻ•āϰা āϝা⧟? ❌ āύা ✅ āĻš্āϝাঁ

đŸ”Ĩ āĻ•োāύāϟি āĻ•āĻ–āύ āĻŦ্āϝāĻŦāĻšাāϰ āĻ•āϰāĻŦো?

Use Case Which One to Use?
UI āĻĨেāĻ•ে āĻļুāϧু observe āĻ•āϰা āϞাāĻ—āĻŦে, modify āĻĻāϰāĻ•াāϰ āύেāχ। LiveData
āĻĄেāϟা āĻĒāϰিāĻŦāϰ্āϤāύ āĻ•āϰāϤে āĻšāĻŦে, āϝেāĻŽāύ Button press āĻ•āϰāϞে Counter āĻŦা⧜āĻŦে। MutableLiveData
ViewModel āĻĨেāĻ•ে UI-āϤে āĻĄেāϟা āĻĒাāĻ াāϤে āĻšāĻŦে, āĻ•িāύ্āϤু UI āĻĄেāϟা āĻĒāϰিāĻŦāϰ্āϤāύ āĻ•āϰāϤে āĻĒাāϰāĻŦে āύা। LiveData

đŸŽ¯ Best Practice (LiveData + MutableLiveData āĻāĻ•āϏাāĻĨে āĻŦ্āϝāĻŦāĻšাāϰ āĻ•āϰা)

💡 MutableLiveData āĻļুāϧু ViewModel-āĻāϰ āĻŽāϧ্āϝে āĻĨাāĻ•āĻŦে, āĻ•িāύ্āϤু UI āĻļুāϧুāĻŽাāϤ্āϰ LiveData observe āĻ•āϰāĻŦে।

āĻ­াāϞো āĻ•োāĻĄ āϏ্āϟাāχāϞ:

class MyViewModel : ViewModel() {
    private val _count = MutableLiveData<Int>(0)  // MutableLiveData (āĻĒāϰিāĻŦāϰ্āϤāύāϝোāĻ—্āϝ)
    val count: LiveData<Int> = _count  // LiveData (āĻļুāϧু observe āĻ•āϰাāϰ āϜāύ্āϝ)

    fun incrementCount() {
        _count.value = (_count.value ?: 0) + 1  // āĻĄেāϟা āφāĻĒāĻĄেāϟ
    }
}

👉 UI āĻļুāϧুāĻŽাāϤ্āϰ count observe āĻ•āϰāĻŦে, āĻ•িāύ্āϤু ViewModel āĻāϰ āĻŦাāχāϰে āĻĨেāĻ•ে _count āĻĒāϰিāĻŦāϰ্āϤāύ āĻ•āϰা āϝাāĻŦে āύা! 🚀


🎉 āĻļেāώ āĻ•āĻĨা:

LiveData → āĻļুāϧু observe āĻ•āϰা āϝা⧟ (āĻĒāϰিāĻŦāϰ্āϤāύ āĻ•āϰা āϝা⧟ āύা)।
MutableLiveData → observe āĻ•āϰা + āĻĒāϰিāĻŦāϰ্āϤāύ āĻ•āϰা āϝা⧟।
āĻ­াāϞো āĻĒ্āϰ্āϝাāĻ•āϟিāϏ: ViewModel-āĻ MutableLiveData āĻŦ্āϝāĻŦāĻšাāϰ āĻ•āϰুāύ, āĻ•িāύ্āϤু UI-āϤে āĻļুāϧু LiveData āĻĒাāĻ াāύ।

āφāĻĒāύাāϰ āĻ•ি āφāϰāĻ“ āĻ•োāύো āĻĒ্āϰāĻļ্āύ āφāĻ›ে? 😊 🚀

Comments

Popular posts from this blog

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

🧠 Regex āĻ•ী?

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