đŸŽ¯ ViewModel āĻ“ AndroidViewModel āĻāĻ•āĻĻāĻŽ āĻŽāϜাāϰāĻ­াāĻŦে āĻŦোāĻাāύো (āĻŦাংāϞাāϝ়)

 

đŸŽ¯ ViewModel āĻ“ AndroidViewModel āĻāĻ•āĻĻāĻŽ āĻŽāϜাāϰāĻ­াāĻŦে āĻŦোāĻাāύো (āĻŦাংāϞাāϝ়)

āĻ­াāĻŦুāύ, āφāĻĒāύি āĻāĻ•āϟা āĻĻোāĻ•াāύ āϚাāϞাāύ। đŸĒ
āφāĻĒāύাāϰ āĻĻোāĻ•াāύে āĻ•াāϏ্āϟāĻŽাāϰ āφāϏে, āϜিāύিāϏ āĻ•েāύে, āϟাāĻ•া āĻĻেāϝ়, āφāĻŦাāϰ āϚāϞে āϝাāϝ়। āĻāĻ–āύ āϝāĻĻি āĻĻোāĻ•াāύেāϰ āϞাāχāϟ āĻ…āĻĢ āĻ•āϰে āφāĻŦাāϰ āĻ…āύ āĻ•āϰেāύ (āĻŽাāύে, āĻĻোāĻ•াāύ āĻŦāύ্āϧ āĻ•āϰে āφāĻŦাāϰ āĻ–ুāϞেāύ), āϤাāĻšāϞে āĻ•ি āĻĻোāĻ•াāύেāϰ āϏāĻŦ āĻšিāϏাāĻŦ-āĻĒāϤ্āϰ āωāϧাāĻ“ āĻšāϝ়ে āϝাāĻŦে? 🤔 āύা! āĻ•াāϰāĻŖ āĻĻোāĻ•াāύেāϰ āĻšিāϏাāĻŦ āĻ–াāϤাāϝ় āϏāĻŦ āϤāĻĨ্āϝ āϞেāĻ–া āĻĨাāĻ•ে।

āĻ িāĻ• āĻāχāϰāĻ•āĻŽāĻ­াāĻŦেāχ ViewModel āĻ•াāϜ āĻ•āϰে!


🧠 ViewModel āĻ•ী? - (āĻĻোāĻ•াāύ-āĻāϰ āωāĻĻাāĻšāϰāĻŖ āĻĻি⧟ে āĻŦুāĻুāύ)

👉 ViewModel āĻšāϞো āϏেāχ āĻĻোāĻ•াāύেāϰ āĻšিāϏাāĻŦ āĻ–াāϤা 📒

āĻāĻ•āϟা āĻ…্āϝাāĻĒে Activity āĻŦা Fragment āĻšāϚ্āĻ›ে āφāĻŽাāĻĻেāϰ āĻĻোāĻ•াāύ।
ViewModel āĻšāϚ্āĻ›ে āϏেāχ āĻšিāϏাāĻŦ āĻ–াāϤা, āϝেāĻ–াāύে āϏāĻŦ āĻĻāϰāĻ•াāϰি āϤāĻĨ্āϝ āϜāĻŽা āĻĨাāĻ•ে। āϝāĻ–āύāχ āĻĻোāĻ•াāύ (āĻ…্āϝাāĻ•্āϟিāĻ­িāϟি) āĻŦāύ্āϧ āĻšāϝ় (destroy āĻšāϝ়) āĻāĻŦং āφāĻŦাāϰ āϚাāϞু āĻšāϝ় (recreate āĻšāϝ়), āϤāĻ–āύāĻ“ āĻšিāϏাāĻŦেāϰ āϤāĻĨ্āϝ āĻšাāϰিāϝ়ে āϝাāϝ় āύা, āĻ•াāϰāĻŖ āϏেāϟা āφāϞাāĻĻা āĻ–াāϤাāϝ় (ViewModel) āϞেāĻ–া āφāĻ›ে!

ViewModel-āĻāϰ āϏুāĻŦিāϧা:
1️⃣ Activity/Fragment āĻŦāύ্āϧ āĻšāϞেāĻ“ āĻĄেāϟা āĻšাāϰাāϝ় āύা।
2️⃣ UI-āϏংāĻ•্āϰাāύ্āϤ āĻĄেāϟা āϏংāϰāĻ•্āώāĻŖ āĻ“ āĻĒāϰিāϚাāϞāύা āĻ•āϰে।
3️⃣ āϞাāχāĻĢāϏাāχāĻ•েāϞেāϰ āϏাāĻĨে āϝুāĻ•্āϤ āύāϝ়, āϤাāχ UI āĻ•āĻŽ্āĻĒোāύেāύ্āϟেāϰ āϧ্āĻŦংāϏ āĻšāϝ়ে āϝাāĻ“āϝ়াāϰ āĻĒ্āϰāĻ­াāĻŦ āĻĒāĻĄ়ে āύা।

📌 ViewModel āĻŦ্āϝāĻŦāĻšাāϰ āύা āĻ•āϰāϞে āĻ•ী āĻšāĻŦে?

āϝāĻĻি ViewModel āĻŦ্āϝāĻŦāĻšাāϰ āύা āĻ•āϰে āϏাāϧাāϰāĻŖ āĻ­েāϰিāϝ়েāĻŦāϞ āĻŦ্āϝāĻŦāĻšাāϰ āĻ•āϰা āĻšāϝ়, āϤাāĻšāϞে āϏ্āĻ•্āϰিāύ āϘোāϰাāύোāϰ (Screen Rotation) āĻĢāϞে āĻŦা āĻ…্āϝাāĻĒ āĻŽিāύিāĻŽাāχāϜ-āĻŽ্āϝাāĻ•্āϏিāĻŽাāχāϜ āĻ•āϰāϞে āĻĄেāϟা āĻšাāϰিāϝ়ে āϝাāĻŦে!

🎭 āĻāĻ•āϟা āĻ›োāϟ āωāĻĻাāĻšāϰāĻŖ: (āĻ­ুāϞ āĻ“ āĻ িāĻ• āĻĒāĻĻ্āϧāϤি)

āĻ­ুāϞ āĻĒāĻĻ্āϧāϤি (āϏাāϧাāϰāĻŖ āĻ­েāϰিāϝ়েāĻŦāϞ āĻŦ্āϝāĻŦāĻšাāϰ āĻ•āϰāϞে)

class MyActivity : AppCompatActivity() {
    var count = 0  // āĻāχ āĻ­েāϰিāϝ়েāĻŦāϞ āϏ্āĻ•্āϰিāύ āϘোāϰাāϞে āĻšাāϰিāϝ়ে āϝাāĻŦে!

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

    fun increment() {
        count++  // āϏ্āĻ•্āϰিāύ āϘোāϰাāύোāϰ āĻĒāϰ count āφāĻŦাāϰ 0 āĻšāϝ়ে āϝাāĻŦে!
    }
}

āĻ িāĻ• āĻĒāĻĻ্āϧāϤি (ViewModel āĻŦ্āϝāĻŦāĻšাāϰ āĻ•āϰāϞে)

class CounterViewModel : ViewModel() {
    var count = 0  // āϏ্āĻ•্āϰিāύ āϘোāϰাāϞেāĻ“ āĻšাāϰাāĻŦে āύা!

    fun increment() {
        count++
    }
}

đŸŽ¯ AndroidViewModel āĻ•ী? - (āφāϰো āĻ—āĻ­ীāϰāĻ­াāĻŦে āĻŦোāĻা)

āϧāϰুāύ, āφāĻĒāύি āφāĻĒāύাāϰ āĻĻোāĻ•াāύেāϰ āĻŦāĻĄ় āĻšিāϏাāĻŦ āϰাāĻ–āϤে āϚাāύ, āϝেāĻ–াāύে āĻŦ্āϝাংāĻ• āĻ…্āϝাāĻ•াāωāύ্āϟেāϰ āϤāĻĨ্āϝ, āϜāĻŽা-āĻ–āϰāϚেāϰ āĻšিāϏাāĻŦ, āĻĒুāϰāύো āϞেāύāĻĻেāύেāϰ āϰেāĻ•āϰ্āĻĄ āϰাāĻ–া āĻĻāϰāĻ•াāϰ।
āĻāĻ—ুāϞোāϰ āϜāύ্āϝ āĻļুāϧু āϏাāϧাāϰāĻŖ āĻ–াāϤা (ViewModel) āĻĻিāϝ়ে āĻ•াāϜ āĻšāĻŦে āύা। āĻāĻ–āύ āĻĻāϰāĻ•াāϰ āĻšāĻŦে āĻŦ্āϝাংāĻ•েāϰ āϏাāĻĨে āĻ•াāύেāĻ•্āϟ āĻĨাāĻ•া āĻšিāϏাāĻŦ āĻ–াāϤা đŸĻ, āϝেāĻ–াāύে āĻŦ্āϝাংāĻ•েāϰ āĻ…āĻĢিāϏিāϝ়াāϞ āϤāĻĨ্āϝ (Application Context) āĻĨাāĻ•āĻŦে।

AndroidViewModel āĻšāϚ্āĻ›ে āϏেāχ āĻŦ্āϝাংāĻ•েāϰ āĻšিāϏাāĻŦ āĻ–াāϤা

👉 AndroidViewModel āĻŦ্āϝāĻŦāĻšাāϰ āĻ•āϰা āĻšāϝ় āϝāĻ–āύ āφāĻŽাāĻĻেāϰ āĻ…্āϝাāĻĒেāϰ Context āĻĻāϰāĻ•াāϰ āĻšāϝ়, āϝেāĻŽāύ Database āĻŦা SharedPreferences āĻŦ্āϝāĻŦāĻšাāϰেāϰ āϜāύ্āϝ।


📌 AndroidViewModel-āĻāϰ āĻĻāϰāĻ•াāϰ āĻ•āĻŦে āĻĒāĻĄ়āĻŦে?

āϝāĻĻি āφāĻĒāύাāϰ āĻ…্āϝাāĻĒে āĻĄাāϟাāĻŦেāϏ, SharedPreferences āĻŦা Context āύিāϰ্āĻ­āϰ āĻ•োāύো āĻ•িāĻ›ু āĻĻāϰāĻ•াāϰ āĻšāϝ়, āϤাāĻšāϞে āϏাāϧাāϰāĻŖ ViewModel āϝāĻĨেāώ্āϟ āύāϝ়, āϤāĻ–āύ AndroidViewModel āϞাāĻ—āĻŦে।

āωāĻĻাāĻšāϰāĻŖ: āφāĻĒāύি āϝāĻĻি āĻ•োāύো āĻ…্āϝাāĻĒ āĻŦাāύাāύ āϝেāĻ–াāύে āχāωāϜাāϰেāϰ āĻĒāĻ›āύ্āĻĻ (theme, language settings) SharedPreferences-āĻ āϏংāϰāĻ•্āώāĻŖ āĻ•āϰেāύ, āϤāĻ–āύ AndroidViewModel āĻĻāϰāĻ•াāϰ āĻšāĻŦে।

🎭 āĻāĻ•āϟা āĻ›োāϟ āωāĻĻাāĻšāϰāĻŖ: (ViewModel āĻŦāύাāĻŽ AndroidViewModel)

āĻ­ুāϞ āĻĒāĻĻ্āϧāϤি (āϏাāϧাāϰāĻŖ ViewModel āĻŦ্āϝāĻŦāĻšাāϰ āĻ•āϰāϞে, āϝেāĻ–াāύে Context āĻĻāϰāĻ•াāϰ)

class MyViewModel : ViewModel() {
    fun getDataFromDatabase(): List<User> {
        val database = Room.databaseBuilder(   // āĻāĻ–াāύে Context āĻĻāϰāĻ•াāϰ, āĻ•িāύ্āϤু ViewModel-āĻ āύেāχ!
            context, AppDatabase::class.java, "my_db"
        ).build()

        return database.userDao().getAllUsers()
    }
}

👆 āĻāĻ–াāύে context āĻĻāϰāĻ•াāϰ, āĻ•িāύ্āϤু āϏাāϧাāϰāĻŖ ViewModel-āĻ Context āĻĨাāĻ•ে āύা!

āĻ িāĻ• āĻĒāĻĻ্āϧāϤি (AndroidViewModel āĻŦ্āϝāĻŦāĻšাāϰ āĻ•āϰāϞে, āϝেāĻ–াāύে Context āĻĻāϰāĻ•াāϰ)

class MyAndroidViewModel(application: Application) : AndroidViewModel(application) {
    private val context = getApplication<Application>().applicationContext

    fun getDataFromDatabase(): List<User> {
        val database = Room.databaseBuilder(
            context, AppDatabase::class.java, "my_db"
        ).build()

        return database.userDao().getAllUsers()
    }
}

👆 āĻāĻ–াāύে context āĻĒাāĻ“āϝ়া āϝাāϚ্āĻ›ে, āĻ•াāϰāĻŖ AndroidViewModel-āĻāϰ āĻŽাāϧ্āϝāĻŽে āφāĻŽāϰা Application Context āĻĒেāϝ়েāĻ›ি!


đŸŽ¯ ViewModel āĻŦāύাāĻŽ AndroidViewModel āĻĒাāϰ্āĻĨāĻ•্āϝ (āϏাāϰাংāĻļ āϟেāĻŦিāϞ)

āĻŦিāώ⧟ ViewModel AndroidViewModel
Context āĻĒাāĻ“āϝ়া āϝাāϝ়? ❌ āύা ✅ āĻš্āϝাঁ
āĻ•োāĻĨাāϝ় āĻŦ্āϝāĻŦāĻšাāϰ āωāĻĒāϝোāĻ—ী? UI Data āϏংāϰāĻ•্āώāĻŖ Context āύিāϰ্āĻ­āϰ āĻ•াāϜ (Database, SharedPreferences)
Activity/Fragment āϞাāχāĻĢāϏাāχāĻ•েāϞেāϰ āϏাāĻĨে āϝুāĻ•্āϤ? ❌ āύা ❌ āύা
Memory āĻŦ্āϝāĻŦāϏ্āĻĨাāĻĒāύা āĻ•েāĻŽāύ? āĻ•āĻŽ āĻŦ্āϝāĻŦāĻšৃāϤ āĻšāϝ় āĻāĻ•āϟু āĻŦেāĻļি āĻŦ্āϝāĻŦāĻšৃāϤ āĻšāϝ় (Context āϧāϰে āϰাāĻ–াāϰ āĻ•াāϰāĻŖে)

🚀 āĻļেāώ āĻ•āĻĨা (āĻ•āĻ–āύ āĻ•োāύāϟা āĻŦ্āϝāĻŦāĻšাāϰ āĻ•āϰāĻŦো?)

  • āĻļুāϧু UI Data āϏংāϰāĻ•্āώāĻŖ āĻ•āϰāϤে āĻšāϞে: ViewModel
  • āϝāĻĻি Context āĻĻāϰāĻ•াāϰ āĻšāϝ় (āϝেāĻŽāύ Database, Preferences): AndroidViewModel

👉 āϏাāϧাāϰāĻŖ āύিāϝ়āĻŽ:

  • āϝāĻĻি āφāĻĒāύাāϰ āĻ•োāĻĄে Context āĻĻāϰāĻ•াāϰ āύা āĻšāϝ়, āϤাāĻšāϞে ViewModel āύিāύ।
  • āϝāĻĻি Context āĻĻāϰāĻ•াāϰ āĻšāϝ়, āϤাāĻšāϞে AndroidViewModel āĻŦ্āϝāĻŦāĻšাāϰ āĻ•āϰুāύ।

đŸ”Ĩ āĻāĻ–āύ āύিāĻļ্āϚāϝ়āχ āϏ্āĻĒāώ্āϟ āĻŦুāĻāϤে āĻĒেāϰেāĻ›েāύ! 😊

āĻ•োāύো āĻĒ্āϰāĻļ্āύ āĻĨাāĻ•āϞে āύিāϰ্āĻĻ্āĻŦিāϧাāϝ় āϜিāϜ্āĻžেāϏ āĻ•āϰুāύ! 🚀

Comments

Popular posts from this blog

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

🧠 Regex āĻ•ী?

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