首页 > 解决方案 > 通过按返回按钮关闭应用程序时取消 Retrofit+RxJava 调用

问题描述

我有一个使用retrofit2RxJava进行网络调用的库模块。应用程序启动时会进行调用,成功时会显示​​ toast 消息。启动应用程序后,如果我在结果出现之前使用后按关闭应用程序,一段时间后会显示 toast,这意味着调用正在后台运行。我不想要那个。如果我关闭应用程序网络呼叫应该被取消。如果我从最近的应用程序中删除该应用程序,它就不会发生。

标签: androidretrofitretrofit2rx-java2

解决方案


你需要这样做:

1) 确定应用程序何时进入后台 - 这可以使用 ProcessLifecycleOwner 类在一个地方完成,请参阅示例实现

2) 一旦 App 进入后台,调用 cancel() 或 cancelAll() 取决于您是否要取消一个或所有后台 API 调用。

由于您想在应用程序关闭时取消所有操作,我认为最好的方法是使用带有 ViewModel 范围的协程来调用 API 操作。这样,一旦您的应用程序关闭,ViewModel 范围就会结束,因此相关的挂起操作将自动取消,实现简洁明了!参考希望这有帮助!


推荐阅读