文章目录
- 1. 使用 `ViewModelProvider`
- 1.1 在 `Activity` 中创建 `ViewModel`
- 1.2 在 `Fragment` 中创建 `ViewModel`
- 2. 使用 `ViewModelFactory`
- 2.1 创建 `ViewModel` 和 `ViewModelFactory`
- 2.2 在 `Activity` 或 `Fragment` 中使用 `ViewModelFactory`
- 3. 使用 `by viewModels()` 委托
- 3.1 添加扩展库依赖
- 3.2 在Fragment 中使用 `by viewModels()`
- 3.3 在 Activity 中使用 `by viewModels()`
- 4. 总结
在Android中,ViewModel
是一种用于管理与UI相关的数据的架构组件。它的生命周期与 Activity
或 Fragment
的生命周期相独立,能够有效地处理配置更改(如旋转屏幕)而不会丢失数据。以下是创建 ViewModel
的几种常见方式。
1. 使用 ViewModelProvider
这是最常用的方式,适用于 Activity
和 Fragment
。
1.1 在 Activity
中创建 ViewModel
定义一个自己的 ViewModel 类:MyViewModel
class MyViewModel: ViewModel() { }
在 Activity 中创建 MyViewModel 的对象,关键代码:ViewModelProvider(this).get(MyViewModel::class.java)
class MyActivity : AppCompatActivity() {private lateinit var viewModel: MyViewModeloverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)viewModel = ViewModelProvider(this).get(MyViewModel::class.java)}
}
1.2 在 Fragment
中创建 ViewModel
在 Fragment 中创建 MyViewModel 的对象,也是使用 ViewModelProvider。 关键代码:ViewModelProvider(requireActivity()).get(MyViewModel::class.java)
class MyFragment : Fragment() {private <