Могу ли я использовать ViewModel для отправки данных на сервер? - PullRequest
0 голосов
/ 14 сентября 2018

В настоящее время я использую ViewModel для загрузки списка шоу в моем приложении.Затем я отображаю его на главном экране.Он сохраняется до изменений конфигурации и не вызывает утечек памяти, поскольку ViewModel обладает такими функциями.

Теперь мне нужно сделать что-то немного другое.Мне нужно войти в систему, чтобы пользователь сделал сетевой вызов конечной точке с использованием дооснащения 2 и rxjava 2, он введет адрес электронной почты и пароль, а затем будет перенаправлен на MainActivity.Во-вторых, мне также нужно обновить информацию о пользователе, он вводит свою новую информацию, а затем я отправляю на сервер.

Могу ли я использовать ViewModel для входа в систему пользователя или для обновления информации о пользователе?Если нет, то что я должен использовать вместо этого?

Что мне нужно

Этот вызов дооснащения 2 должен сохраниться до изменений конфигурации, как вращение экрана, и это не может вызватьутечка памяти.

То, что я пытался

  1. Вызов модифицированного метода enqueue () в MainActivity. Obs: Этот подход не хорош, потому что он использует много вещей в классе пользовательского интерфейса, он вызывает утечки памяти.

  2. Использование статических внутренних классов. Obs: Он не сохраняется после изменений конфигурации, так как мне нужно отменить задачу в onDestroy ().

  3. MVP, похоже, подходит для входа в систему пользователя.

1 Ответ

0 голосов
/ 14 сентября 2018

Вы можете проверить пример проекта Google, в частности, этот класс

https://github.com/googlesamples/android-architecture/blob/todo-mvvm-databinding/todoapp/app/src/main/java/com/example/android/architecture/blueprints/todoapp/addedittask/AddEditTaskViewModel.java

Обычно вы запускаете сетевую операцию в виде модели, в то время как код для реализации логики сети записывается в другом классе (например, ApiManager), а затем получаете результаты в вашей ViewModel

  • LoginViewModel будет иметь объект некоторого класса сетевого администратора

  • Когда вы нажимаете кнопку входа в систему, модель представления будет вызывать networkManager.performLogin()

  • Результаты затем передаются в модель представления (здесь удобно использовать RxJava).

  • В вашей ViewModel выполняйте любую обработку, необходимую для получения результатов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...