Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将活动传递给ViewModel?_Java_Android_Mvvm - Fatal编程技术网

Java 如何将活动传递给ViewModel?

Java 如何将活动传递给ViewModel?,java,android,mvvm,Java,Android,Mvvm,我有一个方法,从用户那里请求权限。我将其放置在ViewModel中以使其成为背景,但为了运行它,我必须将活动传递给shouldShowRequestPermissionRegulation方法。我该怎么做?将代码放在ViewModel中,这需要android上下文,这不是一个好主意。ViewModel的目的与所有的android组件过于分离。如果您试图通过在viewModel中传递activity的上下文来强行使其工作,那么如果您不小心,就会泄漏上下文 一个好的解决方案是了解哪些代码应该依赖于活

我有一个方法,从用户那里请求权限。我将其放置在ViewModel中以使其成为背景,但为了运行它,我必须将
活动
传递给
shouldShowRequestPermissionRegulation
方法。我该怎么做?

将代码放在
ViewModel
中,这需要
android
上下文,这不是一个好主意。
ViewModel
的目的与所有的
android组件
过于分离。如果您试图通过在
viewModel
中传递
activity的上下文
来强行使其工作,那么如果您不小心,就会泄漏上下文


一个好的解决方案是了解哪些代码应该依赖于
活动
,哪些应该放在
视图模型
中。如果我们谈论的是授予
权限
,那么这听起来像是应该存在于
活动
类中的东西,因为
活动
API
来处理权限请求和管理用户的响应,即权限被拒绝或不被拒绝

“如何将活动传递给ViewModel?”“这不是个好主意。如果viewmodel确定需要向用户请求权限,请让viewmodel发出活动观察到的事件。活动会在收到该事件后请求权限。哦,好吧,我在这里读到了一些关于在使用MVVM时请求权限的问题,很多答案都是关于在视图模型中这样做的。谢谢,我将再次深入探讨该主题。可以在viewmodel中检查您是否需要权限。实际上请求权限是UI的责任。好的,谢谢。(非常感谢。)