Volley ImageLoader
强制要求应从主UI线程启动请求:
public ImageContainer get(String requestUrl, ImageListener imageListener,
int maxWidth, int maxHeight) {
// only fulfill requests that were initiated from the main thread.
throwIfNotOnMainThread();
我认为这是为了保证响应回调发生在主UI线程上,可能是因为假设调用者想要更新回调中的UI。
但是,我想在处理GCM通知时使用Volley,GCM通知只需要发送PendingIntent,而不是直接更新UI。我想知道在这种特殊情况下删除throwIfNotOnMainThread()
是否安全。我怀疑那是安全的,但我想知道是否有人能说出一个充分的理由呢?
(仅供参考,看起来RequestQueue
已同步访问mCurrentRequests
,因此Volley内的请求队列似乎存在内部锁定。)
答案 0 :(得分:0)
我不建议删除该保护,因为ImageContainer
的一般用例确实会更改UI。
更好的方法IMO可以直接将RequestQueue
用于自定义请求,并按照您的需要进行处理。