Android 越南元';不要让我们分配。。。下载图像时的字节数

Android 越南元';不要让我们分配。。。下载图像时的字节数,android,android-asynctask,Android,Android Asynctask,我正在构建一个新闻纸应用程序,我需要在gallary view中显示新闻纸图像(epaper)。。。我需要下载大约100张图片。为此,我使用asyncTask,并为每个下载映像创建新的asyncTask对象,当我尝试下载映像并将其设置为gallary时,中间出现错误“VM不允许我们分配…字节”,并使应用程序崩溃 new AsyncTask<String, Void, Bitmap> () { @Override pro

我正在构建一个新闻纸应用程序,我需要在gallary view中显示新闻纸图像(epaper)。。。我需要下载大约100张图片。为此,我使用asyncTask,并为每个下载映像创建新的asyncTask对象,当我尝试下载映像并将其设置为gallary时,中间出现错误“VM不允许我们分配…字节”,并使应用程序崩溃

new AsyncTask<String, Void, Bitmap> () {

                @Override
                protected Bitmap doInBackground(String... params) {
                    HttpGet httpRequest;
                    try {
                        httpRequest = new HttpGet(new URL(params[0]).toURI());
                        HttpClient httpClient = new DefaultHttpClient();
                        HttpResponse response = (HttpResponse) httpClient.execute(httpRequest);
                        HttpEntity entity = response.getEntity();
                        BufferedHttpEntity bufHttpEntity = new BufferedHttpEntity(entity); 
                        InputStream is = bufHttpEntity.getContent();
                        return BitmapFactory.decodeStream(is);

                    } catch (MalformedURLException e) {
                        e.printStackTrace();
                    } catch (URISyntaxException e) {
                        e.printStackTrace();
                    } catch (ClientProtocolException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }/* catch (Error e) {
                        e.printStackTrace();
                    }*/
                    return null;
                }

                @Override
                protected void onPostExecute(Bitmap result) {
                    if(result != null) {
                          img.setImageBitmap(ePaperInfo.getImgJpg1());
                        notifyDataSetChanged();
                    }
                }


            }
新建异步任务(){
@凌驾
受保护位图doInBackground(字符串…参数){
HttpGet-httpRequest;
试一试{
httpRequest=newHttpGet(新URL(参数[0]).toURI());
HttpClient HttpClient=新的DefaultHttpClient();
HttpResponse response=(HttpResponse)httpClient.execute(httpRequest);
HttpEntity=response.getEntity();
BufferedHttpEntity bufHttpEntity=新的BufferedHttpEntity(实体);
InputStream is=bufhttpenty.getContent();
返回BitmapFactory.decodeStream(is);
}捕获(格式错误){
e、 printStackTrace();
}捕获(URISyntaxException e){
e、 printStackTrace();
}捕获(客户端协议例外e){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}/*捕获(错误e){
e、 printStackTrace();
}*/
返回null;
}
@凌驾
受保护的void onPostExecute(位图结果){
如果(结果!=null){
setImageBitmap(ePaperInfo.getImgJpg1());
notifyDataSetChanged();
}
}
}
在logcat中显示错误:

请帮帮我


提前感谢。

您不应该同时在内存中保留100个位图。只需下载所需的位图,然后在下载新位图之前调用recycle()


看看这个例子,看看做你想做的事情的首选方法:

我使用的另一个图像加载选项是,我在我的所有项目中都使用它,它非常简单高效。

谢谢你的u'r replay,但我需要存储这些所有图像,因为我需要在“galleryview”中显示所有图像。好的,然后,您应该尝试实现适配器,就像我在上面发布的ImageDownloader示例:)