为什么Volley在我的应用上使用这么多线程?

时间:2014-11-13 19:45:55

标签: android android-volley

A sample listing of several Volley threads during normal-heavy app operation

我一直在浏览我正在使用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);

什么可能导致后台线程如此恶劣的扩散?

1 个答案:

答案 0 :(得分:2)

Volley背后的主要设计决策之一是同时执行许多图像加载(或任何小的http请求)。 Volley的工作原理是创建许多专用于加载图像的线程,以便您可以同时执行这些网络调用。

有趣的是,Volley实际上被称为Volley,因为它是以一系列箭头命名的,所有箭头同时在一个表面上下雨。尝试将网络请求视为箭头,这可能会使它更清晰。

您可以在这个令人敬畏的Google I / O视频中查看更多关于Volley的信息,其中包括Volley,Ficus Kirkpatrick的创作者,谈论他的发明。