Где я должен анализировать данные из намерения (при сканировании тега NFC), в Activity или во ViewModel? - PullRequest
1 голос
/ 17 мая 2019

Я занимаюсь разработкой приложения, которое должно отображать различное содержимое на основе информации, получаемой из тега NFC. Основная идея: Пользователь сканирует тег NFC -> Android отправляет Намерение -> моя деятельность получает намерение -> анализировать данные NFC из намерения -> извлекать содержимое из БД -> отображать. Проблема в том, что я не уверен, где поставить код разбора Intent. Пока у меня есть 2 варианта:

1) Я получаю объект NFC Tag из Intent в своей деятельности -> читать данные и преобразовывать их из байта [] во что-то более удобное -> анализировать эти данные в ViewModel -> VM делает все остальное. Согласно документации Android, представление должно быть максимально простым. Но в моем случае Activity, похоже, выполняет слишком много работы, разбирая данные из намерений и преобразуя их. Кроме того, это определенно не View, связанный код.

2) Я получаю объект NFC Tag из Intent в своей деятельности -> передаю объект Intent в ViewModel -> ViewModel анализирует данные из Intent и делает все остальное. В этом случае Activity делает только передачу данных, поэтому она остается довольно простой, однако есть проблема с ViewModel, теперь ей нужно знать, как работать с объектом Intent и данными NFC. Согласно документации Android, ViewModel ничего не должен знать о специфических для Android вещах, то есть не должно быть android. * Импорта. Если я работаю с Intent и NFC в VM, мне придется импортировать некоторые классы для Android.

Какова наилучшая практика получения данных от Intents для соответствия MVVM?

...