如何让改装接受每个请求的下载进度回调



背景:
我正试图使用进度回调将旧的下载代码从Android中的AsyncTask和HttpUrlConnection迁移到使用改进。然而,我注意到reforming/okhttp默认情况下不提供这样的回调
我做了很多搜索,找到了一些方法,包括okhttp的官方解决方案,它是由拦截器和自定义的ResponseBody完成的。然而,没有一个能真正满足我的需求
我想要的:
这段代码的问题是回调实际上连接到了拦截器,这使它连接到了okhttp客户端,而我需要的是为每个请求应用不同的回调对象。(不同的android ui元素更改等(
我尝试过的:
据我所知,单个请求由单个改装的Call接口实例标记,因此,如果我想实现每个请求的回调,它必须附加到Call实例或RequestBody实例
不幸的是,我没有找到任何方法在okhttp拦截器中获得改装的Call实例。我也不能将自定义回调对象附加到它。
至于自定义RequestBody方法,它似乎是可行的。但如果涉及到GET请求,它将不再可用,因为无法使用改装设置RequestBody
有什么优雅的方法可以做到这一点吗?所谓"优雅",我的意思是我不喜欢自己以任何形式维护请求->回调映射,如果不小心的话,这甚至可能导致内存泄漏。

您可能能够找到@Tag和/或Invocation。标记允许您在改装请求中定义一个参数,该参数将在拦截器中可用。调用是类似的,但不需要额外的参数。

最新更新