Как использовать MVVM с asyncTask или любой другой вещью? - PullRequest
0 голосов
/ 27 сентября 2018

Я хочу использовать AsyncTaskLoader, но он устарел, поэтому узнал, что вместо AsyncTaskLoader я могу использовать ViewModel и оперативные данные или изменяемые данные, но я не знаю, как использовать их с асинхронной задачей.

Ответы [ 2 ]

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

LiveData с ViewModel по-прежнему является самой последней, и вы можете использовать простой AsyncTask с компонентами архитектуры Android (LiveData и ViewModel), чтобы обеспечить осведомленность о жизненном цикле AsyncTask.Загрузчик не так эффективен, как этот метод выполнения фоновых задач.Поскольку вы уже знаете, как написать AsyncTask, вам нужно только обернуть его в LiveData и ViewModel: он работает как волшебство.Информацию об использовании AsyncTask с LiveData и ViewModel вы можете найти по адресу https://medium.com/androiddevelopers/lifecycle-aware-data-loading-with-android-architecture-components-f95484159de4

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

Прежде всего, я бы порекомендовал использовать JobScheduler / WorkManager, поскольку Google заявляет здесь .

Однако, если вы все еще заинтересованы в использовании AsyncTask/AsyncTaskLoader, что-то подобное может помочь.Поскольку ViewModel содержит ссылку на LiveData, а ViewModel обновляет View (Activity or Fragment), вы можете сделать фоновый сетевой вызов (используя AsyncTaskLoader) и обновить liveData при вызове onLoadFinished.Это обновление LiveData должно активировать наблюдаемое и, в конечном итоге, представление (Activity/Fragment)

Примечание. Убедитесь, что данные, возвращаемые из вызова API (например, <POJO.class>), имеют тип * 1015.* / LiveData.

...