Должно ли мое приложение mvvm, liveata отменять сетевые запросы, когда приложение находится в фоновом режиме?
Я предполагаю, что Facebook не отменяет попытку загрузки вашей ленты, когда вы нажимаете кнопку «Назад».
Ответы (1)
public class YourViewModel {
private WeakReference<Lifecycle> lifeCycle;
public YourViewModel(LifeCycle liefcycle){
this.lifeCycle = new WeakReference<>(lifecycle);
}
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
if(this.lifeCycle.get() != null){
// do cancel your network request here
}
}
// your activity
public class YourActivity extends AppCompatActivity {
YourViewModel viewModel;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
viewModel = new YourViewModel(this.getLifeCycle());
}
}
Я думаю, вы можете отслеживать жизненный цикл вашего хост-контейнера (активность или фрагмент), а в событии destory notify отменять операции сетевого запроса.
person
yu wang
schedule
05.01.2018
Правильно, это похоже на способ сделать это, поэтому я предполагаю, что мой вопрос теперь находится в образце Google, как получить доступ к запросу? Эти запросы похожи на 3 уровня внутри NetworkBoundResource внутри репозитория. Хм...
- person Daniel Wilson; 05.01.2018
В вашей модели просмотра у вас должен быть репозиторий, поэтому просто вызовите репозиторий, чтобы очистить сетевой вызов.
- person yu wang; 08.01.2018
Верно, но вы можете видеть NetworkBoundResource, к которому привязаны вызовы модернизации, верно? Они предоставляют только запрос api в репозитории, например
githubService.getRepo(owner, name);
. Возможно, это не лучший шаблон, потому что нет прямого доступа к объекту модификации Call
- person Daniel Wilson; 08.01.2018
Да, вы правы, я не использую образец шаблона Google, но я думаю, что вы могли бы сделать что-нибудь в LiveDataCallAdapter.java, изменить его, чтобы отобразить функцию отмены, просто предложение.
- person yu wang; 09.01.2018
Это просто показывает, как передать жизненный цикл модели просмотра, но не показывает, как очистить сетевой запрос при репо.
- person zemaitis; 08.10.2018