我一直在浏览我正在使用Volley的应用程序的线程转储。我已经查看了一半的线程,到目前为止,我已经发现了40个凌空线程,主要是NetworkDispatcher,但有些是CacheDispatcher。我们在一项活动中使用排球。在OnCreate中:
volleyQueue = Volley.newRequestQueue(this);
然后,
ImageRequest s3ImageRequest = new ImageRequest(
decryptedImageURL.toString(),
new Response.Listener<Bitmap>() {
@Override
public void onResponse(Bitmap bitmap) {
imageBitmap = bitmap;
loadingImage = false;
}
},
0, // max width
0, // max height
null, // decode configuration
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
Rlog.e(TAG, "Riff Playback: could not load image through Volley: " + decryptedImageURL);
volleyError.printStackTrace();
abortPlayback();
}
}
);
s3ImageRequest.setTag(TAG);
volleyQueue.add(s3ImageRequest);
什么可能导致后台线程如此恶劣的扩散?
答案 0 :(得分:2)
Volley背后的主要设计决策之一是同时执行许多图像加载(或任何小的http请求)。 Volley的工作原理是创建许多专用于加载图像的线程,以便您可以同时执行这些网络调用。
有趣的是,Volley实际上被称为Volley,因为它是以一系列箭头命名的,所有箭头同时在一个表面上下雨。尝试将网络请求视为箭头,这可能会使它更清晰。您可以在这个令人敬畏的Google I / O视频中查看更多关于Volley的信息,其中包括Volley,Ficus Kirkpatrick的创作者,谈论他的发明。