我正在研究 google 的架构组件以在我的应用程序中实现 ViewModel 和 LiveData,官方文档说:
注意:由于 ViewModel 比特定的 Activity 和 Fragment 实例的寿命更长,它不应该引用 View 或任何可能持有对 Activity 上下文的引用的类。如果 ViewModel 需要 Application 上下文(例如,寻找系统服务),它可以扩展 AndroidViewModel 类,并在构造函数中有一个接收 Application 的构造函数(因为 Application 类扩展了 Context)
之后,我最终得到了这样的代码:
public class ViewModelTest extends AndroidViewModel {
public ViewModelTest(Application application) {
super(application);
}
public void test(){
Prefs.getCurrentCode(getApplication());
}
我应该在活动中正常实例化它吗?
val viewModel2 = ViewModelProviders.of(this).get(ViewModelTest::class.java)
viewModel2.test()
不是很糟糕吗?在需要访问 SharedPreferences 或任何需要上下文的东西时使用此应用程序变量?如果是,我是否应该避免在 ViewModel 上使用它而只在视图上使用它?特别是如果我想用需要上下文的值更新 UI 组件。我有点不知道如何解决这个问题,我愿意接受任何建议。
提前致谢