如何使改造接受每个请求的下载进度回调?

问题描述 投票:1回答:1

背景:我正在尝试将具有进度回调的旧下载代码从Android中的AsyncTask和HttpUrlConnection迁移到使用改造。但是,我注意到Retrofit / okhttp默认不提供此类回调。我做了很多搜索,找到了一些方法,包括okhttp的官方solution,它由拦截器和自定义的ResponseBody完成。但是,它们都不符合我的需求。我想要的是:这段代码的问题在于,回调实际上是附加到拦截器的,这使它附加到了okhttp客户端,而我需要为each请求应用different回调对象。(不同的android ui元素更改等)我尝试过的:据我了解,单个请求由单个改造的Call接口实例标记,因此,如果我要实现每个请求的回调,则必须将其附加到Call实例或RequestBody实例。不幸的是,我没有找到任何方法来获取okhttp拦截器中的改造Call实例。我也不能在其上附加自定义回调对象。至于自定义的RequestBody方法,这似乎是可行的。但是,如果涉及GET请求,则无法再次使用,因为无法使用改型设置RequestBody。有什么优雅的方法可以做到这一点吗? “优雅”是指我不希望维护请求->以任何形式自己编写回调映射,如果不非常谨慎的话,甚至可能导致内存泄漏。

java android retrofit2 okhttp
1个回答
0
投票

您可能可以使用@Tag和/或Invocation找到某些内容。 Tag使您可以在改造请求中定义一个参数,该参数将在拦截器中可用。 Invocation相似,但不需要额外的参数。

© www.soinside.com 2019 - 2024. All rights reserved.