Два случая:
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 привязан к определенному представлению/действию. Таким образом, это будет означать, что если мы изменим представления (например, введем настройки из ящика, в то время как модель представления домашней страницы извлекает местоположение), мы потеряем данные о местоположении после их получения, а затем, когда пользователь вернется на домашнюю страницу, вместо того, чтобы просто показать им местоположение, нам пришлось бы запрашивать местоположение снова и снова.
Я не нашел способа, которым сделки будут во всех этих случаях. Кажется, нет однозначного ответа.
Есть новости по этому вопросу?