java - Android引起的java.lang.outofmemory错误

标签 java android performance bitmap

我有这个 XML 和代码,我添加了来自 http://developer.android.com/training/displaying-bitmaps/load-bitmap.html 的代码正如指南所说的如何有效地加载位图,但我仍然从 logcat 中得到内存不足错误。任何帮助

更新我现在正在使用毕加索,但仍然出现内存不足错误。这太疯狂了

我已经有了这个代码

ImageView targetImage;
ImageView targetImage2;
ImageView targetImage3;
ImageView targetImage4;
ImageView targetImage5;
ImageView targetImage6;
ImageView targetImage7;
ImageView targetImage8;
ImageView targetImage9;
ImageView targetImage10;
ImageView targetImage11;
ImageView targetImage12;
ImageView targetImage13;
ImageView targetImage14;

private Context context;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.app3);
vf = (ViewFlipper) findViewById(R.id.fliping); 
targetImage = (ImageView) findViewById(R.id.imageView1);
targetImage2 = (ImageView) findViewById(R.id.imageView2);
targetImage3 = (ImageView) findViewById(R.id.imageView3);
targetImage4 = (ImageView) findViewById(R.id.imageView4);
targetImage5 = (ImageView) findViewById(R.id.imageView5);
targetImage6 = (ImageView) findViewById(R.id.imageView6);
targetImage7 = (ImageView) findViewById(R.id.imageView7);
targetImage8 = (ImageView) findViewById(R.id.imageView8);
targetImage9 = (ImageView) findViewById(R.id.imageView9);
targetImage10 = (ImageView) findViewById(R.id.imageView10);
targetImage11 = (ImageView) findViewById(R.id.imageView11);
targetImage12 = (ImageView) findViewById(R.id.imageView12);
targetImage13 = (ImageView) findViewById(R.id.imageView13);
targetImage14 = (ImageView) findViewById(R.id.imageView14);

Picasso.with(context).load(R.drawable.gr).resize(50, 50).centerCrop().into(targetImage); 
Picasso.with(context).load(R.drawable.calvitcdetails).resize(50, 50).centerCrop().into(targetImage2); 
Picasso.with(context).load(R.drawable.kapedetails).resize(50, 50).centerCrop().into(targetImage3); 
Picasso.with(context).load(R.drawable.glutafitdetails).resize(50, 50).centerCrop().into(targetImage4); 
Picasso.with(context).load(R.drawable.pgtdetails).resize(50, 50).centerCrop().into(targetImage5); 
Picasso.with(context).load(R.drawable.hilifedetails).resize(50, 50).centerCrop().into(targetImage6); 
Picasso.with(context).load(R.drawable.organicbarleyjuicedetails).resize(50, 50).centerCrop().into(targetImage7); 
Picasso.with(context).load(R.drawable.barleydetails).resize(50, 50).centerCrop().into(targetImage8); 
Picasso.with(context).load(R.drawable.spirulinadetails).resize(50, 50).centerCrop().into(targetImage9); 
Picasso.with(context).load(R.drawable.omnisoapdetails).resize(50, 50).centerCrop().into(targetImage10); 
Picasso.with(context).load(R.drawable.omnipinkishdetails).resize(50, 50).centerCrop().into(targetImage11); 
Picasso.with(context).load(R.drawable.omnidaydetails).resize(50, 50).centerCrop().into(targetImage12); 
Picasso.with(context).load(R.drawable.omnitonerdetails).resize(50, 50).centerCrop().into(targetImage13); 
Picasso.with(context).load(R.drawable.shuyadetails).resize(50, 50).centerCrop().into(targetImage14);


}

最佳答案

Any help

是的,您可以尝试使用 Picasso加载图像,因为它还可以自动缓存图像和内存管理。我一直发现毕加索的 resize() 方法很有帮助。

此外,请考虑使用RelativeLayout,因为您嵌套了太多LinearLayout来显示单个ImageView,这是性能 killer 。

关于java - Android引起的java.lang.outofmemory错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25497125/

相关文章:

java - Spring中的任务执行与调度

Android 下载 apk 文件并保存到内部存储

performance - 索引字段与子字段的效率

asp.net - 提高网站性能?

java - 在Android中,有没有办法设置标志/广播接收器来影响其他应用程序?

Java 更改字节码 - 不起作用

java - 使用 apache poi api 创建 Word 文档时,如何添加 X of Y 格式的页码?

android - 如何获取 gmail/电子邮件客户端收件箱文件夹中的消息?

android - 在 fragment 中滚动 ListView 时向上移动 View

android - 加载图像时 ListView 非常慢(使用 Universal Image Loader)