ViewModelProvider
是 Android Jetpack 中的一個類,用于創建和管理 ViewModel 實例。它有助于在配置更改(如屏幕旋轉)時保持數據并避免內存泄漏。以下是如何有效使用 ViewModelProvider
的步驟:
dependencies {
def lifecycle_version = "2.4.1"
implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version"
}
AndroidViewModel
。在這個類中,你可以定義數據和業務邏輯:import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.viewModelScope
import kotlinx.coroutines.launch
class MyViewModel : AndroidViewModel {
private val _data = MutableLiveData<String>()
val data: LiveData<String> get() = _data
fun fetchData() {
viewModelScope.launch {
// 獲取數據的異步操作
val result = withContext(Dispatchers.IO) {
// 模擬網絡請求或其他耗時操作
"Hello, World!"
}
_data.postValue(result)
}
}
}
ViewModelProvider
創建 ViewModel 實例:import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.Observer
class MainActivity : AppCompatActivity() {
private lateinit var viewModel: MyViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
viewModel = ViewModelProvider(this).get(MyViewModel::class.java)
// 觀察數據變化
viewModel.data.observe(this, Observer { result ->
// 更新 UI
println("Data: $result")
})
// 獲取數據
viewModel.fetchData()
}
}
注意:在 Activity 或 Fragment 中,ViewModelProvider 會自動處理生命周期問題。當 Activity 或 Fragment 被銷毀時,ViewModel 會被自動清除。
通過遵循這些步驟,你可以有效地使用 ViewModelProvider
來管理 ViewModel 實例并在配置更改時保持數據。