Где хранить / управлять данными сеанса и глобальными данными / данными без сохранения состояния, используя архитектуру MVVM в Android? - PullRequest
2 голосов
/ 18 марта 2019

Два случая:

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

Я не нашел способа заключить сделки во всех этих случаях. Кажется, нет четкого ответа.

...