一、前言
因为ViewModel
绝不能引用视图、Lifecycle
或可能存储对 Activity 上下文的引用的任何类。如果 ViewModel
需要 Application
上下文(例如,为了查找系统服务),它可以扩展 AndroidViewModel
类并设置用于接收 Application
的构造函数,因为 Application
类会扩展 Context
。
二、代码编写
class TestAndroidViewModel(private val context: Application): AndroidViewModel(context) {
fun show(){
Toast.makeText(context,"toast",Toast.LENGTH_SHORT).show()
}
}
使用方式如下:
class MainActivity : AppCompatActivity() {
private val viewModel: TestAndroidViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
viewModel.show()
}
}