我的 mvvm、实时数据应用是否应该在应用后台运行时取消网络请求?



使用Google的mvvm架构组件Github浏览器示例作为参考,如何取消托管的视图模型,观察实时数据,改造网络请求? :)

也许我读错了,但是如果网络状况不佳并且请求需要例如 30 秒,则应取消每个请求,否则如果快速打开和关闭应用程序,可能会启动许多请求。一个设计良好的应用程序将如何处理这个问题?

我认为,删除实时数据观察器时的回调可以通过在此处覆盖Inactive来访问。我可以尝试在此处取消所有呼叫,但是如果我出于某种原因不想取消某些呼叫怎么办?

我猜Facebook不会取消尝试加载您的提要,当您点击后退按钮时。

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 通知事件中取消网络请求操作。

最新更新