ViewModel

Understanding ViewModel and its implementation

Introduction to ViewModel

ViewModel Android Architecture Components का एक important part है जो UI-related data को manage करता है। यह configuration changes (जैसे screen rotation) के दौरान data को survive करने में help करता है।

ViewModel is an important part of Android Architecture Components that manages UI-related data. It helps data survive configuration changes (like screen rotation).

Key Features (मुख्य विशेषताएं):

  • ViewModel UI data को lifecycle-aware तरीके से manage करता है
  • ViewModel manages UI data in a lifecycle-aware way
  • ViewModel configuration changes के दौरान data को preserve करता है
  • ViewModel preserves data during configuration changes
  • ViewModel UI logic को separate करता है
  • ViewModel separates UI logic
  • ViewModel data को UI components के बीच share करने में help करता है
  • ViewModel helps share data between UI components

Implementation Example (इम्प्लीमेंटेशन उदाहरण)

ViewModel को implement करने का example:

Example of implementing ViewModel:

// ViewModel class
class UserViewModel : ViewModel() {
    private val _users = MutableLiveData>()
    val users: LiveData> = _users

    fun loadUsers() {
        viewModelScope.launch {
            _users.value = repository.getUsers()
        }
    }
}

// Activity/Fragment implementation
class UserActivity : AppCompatActivity() {
    private lateinit var viewModel: UserViewModel

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        viewModel = ViewModelProvider(this).get(UserViewModel::class.java)
        
        viewModel.users.observe(this) { users ->
            // Update UI with users
        }
        
        viewModel.loadUsers()
    }
}

ViewModel Lifecycle (व्यूमॉडल लाइफसाइकल)

ViewModel का lifecycle:

ViewModel lifecycle:

State (अवस्था) Description (विवरण)
Creation ViewModel create होता है जब activity/fragment create होता है
Creation ViewModel is created when activity/fragment is created
Active ViewModel active रहता है जब activity/fragment active रहता है
Active ViewModel remains active while activity/fragment is active
Cleared ViewModel clear होता है जब activity/fragment destroy होता है
Cleared ViewModel is cleared when activity/fragment is destroyed

Best Practices (सर्वोत्तम प्रथाएं)

ViewModel के साथ काम करने के best practices:

Best practices for working with ViewModel:

  • Separation of Concerns: UI logic को ViewModel में keep करें
  • Separation of Concerns: Keep UI logic in ViewModel
  • Data Exposure: Data को LiveData के through expose करें
  • Data Exposure: Expose data through LiveData
  • Coroutines: Background operations के लिए coroutines का use करें
  • Coroutines: Use coroutines for background operations
  • Testing: ViewModel को easily testable बनाएं
  • Testing: Make ViewModel easily testable