请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

Activity销毁时需要取消网络请求吗?

请问一下,视屏中提到在Activity销毁时,取消异步任务。在开发过程中,对于网络请求这种,在Activity销毁时也需要取消吗?如果需要取消,有比较优雅的方式来处理吗?

正在回答 回答被采纳积分+3

1回答

Vincent文森 2022-09-06 11:00:23

同学你好,关于这个问题可以具体情况具体对待:

首先,异步网络请求,我们可以分为两种,一种我们称之为数据流,也就是获取网络数据,用于页面的展示。对于这种情况,如果数据不需要缓存,且只有当前页面使用这个数据时,是可以随着Activity的销毁去取消这个任务的。

另一种,我们称之为控制流,也就是给服务器提交数据或者改变服务器数据状态的操作,这种情况如果取消网络请求,就有可能引起业务上的bug了。

然后我们再来说一下如何取消的问题,一般来说,我们使用的网络框架,基本上都无法做到把一个正在发送的网络请求中途关闭。所以我们只能在请求返回时不去响应返回结果,做到避免处理数据,节约资源的目的。

另外,成熟的App框架,一般都会设计一个任务队列(可以用线程池实现),避免并发大量请求的并发。在这种情况下,就可以通过把任务移除出队列的方式,来取消任务。

总体来说,别让异步任务持有Activity等不必要的实例,就能避免内存泄漏。另外,别浪费资源去处理不需要被展示的数据。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号