Я разрабатываю свое первое приложение для Android, и, поскольку мой код быстро становится огромным беспорядком, я решил следовать шаблону MVP.
Мое приложение разделено на представления (фрагменты), презентеры и контракты (интерфейсы с методами представления и докладчик будет использовать его для общения).
Моя проблема в том, что у меня есть форма, в которой есть поле с местоположением пользователя, которое я получаю с помощью API местоположения Google. У меня есть класс LocationHelper, который отвечает за проверку/запрос разрешений, создание клиента Google API, получение местоположения и т. д.
Однако я не знаю, куда поместить код, который использует этот класс: мой первый подход заключался в создании его экземпляра. в презентаторе, поскольку это больше бизнес-логика, чем материал пользовательского интерфейса, однако многим методам требуется активность вызывающей стороны в качестве параметра. Например, чтобы создать клиент 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, у докладчика не должно быть кода контекста/андроида. Что было бы наилучшей практикой в этом случае?