Два случая:
1. Session data - For example the logged in User details, or some other session data.
2. Global/stateless data - A repository with retrofit client.
для случая 1 :
Самый простой способ - это использовать какой-то синглтон, «DataManager / LoginManger», но синглтоны плохие (тестирование, непредсказуемые состояния с течением времени ...)
Другой способ - использовать класс Application, что тоже плохо.
Так, где мы храним эти данные?
для случая 2 :
Простой репозиторий, который содержит ссылку на клиента Retrofit, например или других клиентов.
Использование этого как одиночного имеет больше смысла, так как этот класс будет неизменным / не сохраняющим состояния Мы бы хотели создать модифицированный клиент только один раз.
Но .. Тестирование?
3 . Кроме того, что, если мы хотим получить местоположение?
Мы могли бы иметь LiveData, ответственный за это в ViewModel. Но ViewModel ограничен определенной View / Activity. Так что это будет означать, что если мы изменим представления (например, введем настройки из ящика, когда модель представления домашней страницы выбирала местоположение), мы потеряем данные о местоположении, как только они будут получены, а затем, когда пользователь вернется на домашнюю страницу, вместо того, чтобы просто показать им местоположение, нам нужно будет снова запросить это местоположение.
Я не нашел способа заключить сделки во всех этих случаях. Кажется, нет четкого ответа.