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