如果我声明超过3个Drawable,Android应用程序崩溃

时间:2016-06-10 21:22:12

标签: android

我现在正在Android Studio中制作一个简单的骰子应用程序,并且每个模具的每一面都有6个Drawable。这是代码的样子:

final Drawable die1 = ContextCompat.getDrawable(this, R.drawable.die1);
final Drawable die2 = ContextCompat.getDrawable(this, R.drawable.die2);
final Drawable die3 = ContextCompat.getDrawable(this, R.drawable.die3);
final Drawable die4 = ContextCompat.getDrawable(this, R.drawable.die4);
final Drawable die5 = ContextCompat.getDrawable(this, R.drawable.die5);
final Drawable die6 = ContextCompat.getDrawable(this, R.drawable.die6);

当三个drawable被注释掉时,app运行正常,但如果超过3个未注释,则不会在模拟器中运行。我尝试通过构建一个apk并在我的手机上运行应用程序来修复此问题,但即使其中一个drawables未被注释,它也无法运行。如果是,则应用程序运行,但它是一个空白屏幕。

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

由于OutOfMemory错误,您可以使用小尺寸的png图像来克服OutOfMemory错误。如果您想使用现有图片,可以使用TinyPng在线工具缩小图片。

答案 1 :(得分:0)

首先为什么需要在drawable中使用许多图像文件,如果你真的需要加载尽可能多的图像,那么逐个调整它们的大小。如果要在imageview上加载,则可以使用Picasso库。一些解决方案可以

  1. 将图片缩放为小尺寸https://developer.android.com/training/displaying-bitmaps/load-bitmap.html
  2. 使用毕加索库或其他(如果在图像视图中加载图像)
  3. 每次加载图像时清除内存。这将有助于管理内存不足错误。使用LRU chache class
    http://code.tutsplus.com/tutorials/android-sdk-working-with-picasso--cms-22149
  4. 使用具有更多内存的设备