pdc*_*cmb 9 android mvvm android-permissions android-mvvm
我正在使用 MVVM clean 架构,需要使用融合位置提供程序获取当前位置,因此在获取当前位置之前,我需要检查用户是否已授予访问位置和互联网的权限。
我正在通过实现数据源从存储库检索位置,但我不确定应该在哪里请求许可。在存储库中,当我请求位置或在活动中时,首先请求许可,然后请求位置?
在第一种情况下,流程将是:
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
第一种方法对我来说看起来更简单、更符合逻辑。表示层只是请求位置,然后存储库返回位置或错误,但是数据层内的逻辑可能太多了?
根据用户交互的所有事情都不应该在存储库内完成。
ViewModel 是关于处理用户操作并将所有内容放在一起:UI 和数据。换句话说,Repository 根据一些请求参数返回数据,ViewModel 决定如何对哪个操作做出反应。
这里使用第二种情况。
| 归档时间: |
|
| 查看次数: |
3096 次 |
| 最近记录: |