【问题标题】:Android Permissions in MVVM at repository level or inside Activity?MVVM 中存储库级别或 Activity 内部的 Android 权限?
【发布时间】:2019-09-04 11:32:20
【问题描述】:

我正在使用 MVVM 清洁架构,需要使用融合位置提供程序获取当前位置,因此在获取当前位置之前,我需要检查用户是否已授予访问该位置和互联网的权限。
我通过实现数据源从存储库中检索位置,但我不确定我应该在哪里请求许可。在存储库中,当我请求位置或活动时,首先请求许可,然后请求位置?

在第一种情况下,流程是:
1)User clicks the button(view)
2)Viewmodel requests for location (viewmodel->usecase->repository)
3)Repository checks permissions and requests location
4)Observable is returned which emits location(s) or error if no permission were granted (or other error)

第二种情况:
1)User clicks the button and permission are checked/requested inside activity
2)If permission are granted, viewmodel requests position otherwise view shows an error
3)Repository requests and returns the location

第一种方法对我来说看起来更直接和合乎逻辑。表示层只是请求位置,然后存储库返回位置或错误,但是可能是数据层内部的逻辑太多?

【问题讨论】:

  • 我也遇到了同样的问题,你是怎么解决的?
  • 旧帖,但我也想知道您是如何解决这个问题的?..

标签: android mvvm android-permissions android-mvvm


【解决方案1】:

所有与用户交互相关的事情都不应该在存储库中完成。

ViewModel 是关于处理用户操作并将所有内容放在一起:UI 和数据。也就是说,repository 根据一些请求参数返回数据,ViewModel 决定对哪个动作做出反应。

这里使用第二种情况。

【讨论】:

    【解决方案2】:

    由于 ViewModel 和 Repository 不应该知道任何有关 Fragment 或 Activity 的信息,我想说必须在 Activity 或 Fragment 中检查 Permission..

    【讨论】:

      猜你喜欢
      • 2020-03-11
      • 1970-01-01
      • 1970-01-01
      • 2022-07-27
      • 1970-01-01
      • 2012-05-26
      • 2012-02-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多