JessYan
JessYan
安全的,不会报 ConcurrentModificationException
What function do you want to achieve,ProgressListener is Observer pattern
https://jitpack.io/#JessYanCoding/RetrofitUrlManager/v1.4.0
抱歉,这么久才来回复,当时看到了这个 PR 后,还没认真看里面的代码,就忙其他事情去了,就忘了。。。 感谢贡献的代码,将之前弱引用 URl,改为现在的弱引用 Listener,挺赞的,这可以让各自注册监听器的地方,可以自行管理自己的监听器的生命周期。 但是将之前 if (mRequestListeners.containsKey(key)) 才给当前 Request 添加 ProgressRequestBody 的逻辑,改为不管开发者是否想监听这个这个 URL,只要开发者使用了 ProgressManager 就会对项目中所有请求的 URl 添加 ProgressRequestBody,即便这个请求没有监听的需求,而项目中实际需要监听的 URL 明显比不需要监听的 URL 少很多。 这将对所有 URL 产生影响,个人认为这个优化不是很好,会增加很多无效操作,对不需要监听的 URL 来说没有什么意义
所以我不是很清楚去掉 mRequestListeners.containsKey(key) 的必要性,还是说这次更新有什么地方必须要保证 listeners 不为空,是否可以在继续保留 if (mRequestListeners.containsKey(key)) 的情况下,将 Listener 改为弱引用
但是为了完成这个需求,代价太过庞大,需要监听的 URL 在项目中是少数,想实现请求之前未监听但中途需要监听的 URL 更是少数,为了实现这个需求,付出让全部 URL 的 RequestBody 都被重写的代价,个人认为这样不是很好,性价比不是很高。 可以使用文档告诉用户,如果想实现让之前未实现监听,但在请求中途突然需要添加监听的需求,就需要在 URL 开始之前随便添加个空实现的监听器占位,这样只需要让 ProgressRequestBody 中的数组变成 List,就可以实现请求中途添加监听器的需求。 所以我想问下,在这个 PR 中能否只保留对弱引用和数组的优化,去掉对 mRequestListeners.containsKey(key) 的优化,或者你还有什么更好的方案
https://jitpack.io/#JessYanCoding/ProgressManager/v1.5.0
你好,请问你的项目不能使用 Gradle 构建吗
不是 Android 项目,我只有后续抽空了支持下,可以直接将源码打包成 jar 的方式使用
@DrTF 可以的,我以为 Retrofit 都是 Android 项目在用,所以暂时没有提供 maven