使用不在 Android 中的构造函数或工厂中的函数成员将上下文传递给 ViewModel

Ima*_*ian 6 resources android mvvm viewmodel

我知道将上下文传递给 ViewModel 不是最佳实践。但我想知道将上下文实例作为 ViewModel 中函数的局部参数是否可以?

因为在这种情况下,函数使用上下文并在函数结束时释放该上下文引用。

请假设我们不想使用 AndroidViewModel 来获取应用程序上下文。

例如:

class MyViewModel : ViewModel(){

     initColors(context:Context){

             //do something with context like getting colors from resourcse
      }

}
Run Code Online (Sandbox Code Playgroud)

并在片段中:

class Myfrgament:Fragment(){
private val viewModel: LessonFragmentViewModel by viewModels{}
   override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View {

   viewModel.initColors(requireContext())
}
Run Code Online (Sandbox Code Playgroud)

}