gpt4 book ai didi

android - 使用 MVP 架构在运行时检查权限的最佳方法是什么?

转载 作者:IT老高 更新时间:2023-10-28 23:34:31 26 4
gpt4 key购买 nike

我正在开发一个 Android 应用程序,我必须在运行时请求权限。我想知道使用 Model-View-Presenter 架构实现它的最佳方式。

我最初的想法是让演示者调用一个负责权限的组件(比如 PermissionHandler),并相应地更新 View 。

问题在于检查权限的代码与 Activity 类紧密耦合。以下是一些需要 Activity 或 Context 的方法:

  • ContextCompat.checkSelfPermission()
  • ActivityCompat.shouldShowRequestPermissionRationale()
  • ActivityCompat.requestPermissions()
  • onRequestPermissionsResult()(回调)

这意味着我必须将一个 Activity 对象传递给演示者,我不太喜欢这件事,因为我听说让演示者远离 Android 代码对测试很有好处。

因此,我随后考虑在 View 级别(在 Activity 中)处理权限,但我想这会损害让 View 只负责 UI 更新而没有业务逻辑的目的。

我不确定解决这个问题的最佳方法是什么,使代码尽可能地解耦和可维护。有什么想法吗?

最佳答案

我会做的是:

View 将实现:

public Activity getViewActivity();

演示者将实现:

public void requestPermissions();
public void onPermissionsResult();

requestPermissions中,presenter会做:getViewActivity().checkSelfPermission; getViewActivity.requestPermissions();等

View 将在 onRequestPermissionsResult 回调中调用 presenter.onPermissionsResult();

所有的逻辑都将在presenter内部实现。

在我看来,您的 Presenter 是解耦的:它不依赖于任何 View 实现(它只依赖于 View 接口(interface))。

“我听说让您的演示者不使用 Android 代码对测试很有好处。”我不明白这部分。如果代码好,可以测试没有问题。

关于android - 使用 MVP 架构在运行时检查权限的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41002174/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com