使用谷歌的mvvm架构组件Github browser sample as a reference,如何取消托管的视图模型,观察实时数据,改进网络请求? :)
也许我读错了,但如果网络状况不佳并且请求需要30秒,则应该取消每个请求,否则如果应用程序快速打开和关闭,可能会启动许多请求。精心设计的应用程序如何处理这个?
删除了liveata观察者时的回调可以访问by overriding onInactive here我想。我可以尝试在这里取消所有通话,但如果由于某种原因我不想取消某些通话怎么办?
我猜测Facebook在点击后退按钮时不会取消尝试加载您的Feed。
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事件中,取消网络请求操作。