Android 中的 MVP - 在哪里放置 Google API 位置服务调用?

MVP in Android - where to place Google API calls for location services?

我正在开发我的第一个 android 应用程序,由于我的代码很快变得一团糟,我决定遵循 MVP 模式。
我的应用分为视图(片段)、Presenters 和 Contracts(与视图及其演示者将用于通信的方法的接口)。
我的问题是我有一个表单,其中有一个包含用户位置的字段,我使用 Google 位置 API 检索该字段。我有一个 LocationHelper class 负责 checking/asking 权限、构建 google API 客户端、获取位置等
但是,我不知道在哪里放置使用此 class 的代码:我的第一种方法是在演示者中实例化它,因为它比 UI 的东西更多的业务逻辑,但是许多方法需要调用者activity 作为参数。例如构建 Google API 客户端:

mGoogleApiClient = new GoogleApiClient.Builder(context)
            .addConnectionCallbacks((GoogleApiClient.ConnectionCallbacks) current_activity)
            .addOnConnectionFailedListener((GoogleApiClient.OnConnectionFailedListener) current_activity)
            .addApi(LocationServices.API).build();

或位置设置请求:

status.startResolutionForResult(current_activity,REQUEST_CHECK_SETTINGS);

但是,根据我在 MVP 中的理解,演示者应该没有 context/android 代码。 在这种情况下,最佳做法是什么?

我建议您阅读这篇文章 link。 您可以使用 Dagger 注入上下文,而不必将其传递给演示者,但我认为这根本不是一个坏习惯。

在我的项目中,我经常在我的 BasePresenter 中使用这一行来获取所有上下文,而不是从 Activity;

        this.mContext = CorretorApplication.getInstance().getApplicationContext();