安卓java vm堆栈大小_如何修复android上的“java.lang.OutOfMemoryError:位图大小超过VM预算”错误...

我正在做...我有一个安卓游戏(见google source control来源)它's a card game, and I'使用了一种方法,每一轮重绘每一手 - 这可能是浪费,但我想不出更好的方法来做到这一点 . 这是redrawHand方法的代码:

private void redrawHand(Hand hand) {

ImageView[] cardView = hand.getCardsViews();

View container = hand.getContainer();

for (int i = 0; i < GameData.YANIV_NUM_CARDS; i++) {

PlayingCard card = hand.getCardByLocation(i);

if (card != null) {

// Show Card

cardView[i].setVisibility(View.VISIBLE);

int resId;

if (hand.shouldCardsBeShown()) {

resId = card.getImageResourceId();

} else {

resId = R.drawable.back;

}

cardView[i].setImageResource(resId);

// TODO: Disgusting patch, need to fix asap!!!

if (hand.isHumanPlayer()) {

// Show isSelected

// when selected, move up 15 pixels

boolean isSelected = hand.isCardSelected(i);

((LinearLayout.LayoutParams) cardView[i].getLayoutParams()).bottomMargin = isSelected? 15 : 0;

} } else {

cardView[i].setVisibility(View.INVISIBLE); } } // Set player name hand.getHandLabelView().setText(hand.getHandLabel()); container.requestLayout(); }

java.lang.OutOfMemoryError:位图大小超过android.graphics.BitmapFactory.decode上的android.graphics.BitmapFactory.nativeDecodeAsset(本地方法)中的VM预算 . 位于android.graphics.BitmapFactory.decodeStream(BitmapFactory)的BitmapFactory.decodeStream(BitmapFactory.java:363) . java:212)在android.content.res.Resources.getDrawable的android.content.res.Resources.loadDrawable(Resources.java:1639)上的android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:673) .java:535)在android.widget.ImageView.resolveUri(ImageView.java:541)的android.widget.ImageView.setImageResource(ImageView.java:293)at com.geekadoo.ui.Yaniv.redrawHand(Yaniv.java: 765)在com.geekadoo.ui.Yaniv.performYaniv(Yaniv.java:539)的com.geekadoo.ui.Yaniv.performYanivHandler(Yaniv.java:503)com.geekadoo.ui.Yaniv.access $ 1(Yaniv . java:502)在android.view.View.onTouchEvent(View.java: 3849)在android.widget.TextVie w.onTouchEvent(TextView.java:6376)位于android.view.View.ScriptGroup.dispatchTouchEvent(ViewGroup)的android.view.View.ispatchTouchEvent(View.java:3385)上的android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:872) .java:872)在Android.view.ViewGroup.DispatchTouchEvent(ViewGroup.java:872)的android.view.ViewGroup中的android.view.ViewGroup . 在android.view.ViewGroup.DispatchTouchEvent(ViewGroup.java:872)的android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:872)位于com.android的android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:872) . internal.policy.impl.PhoneWindow $ DecorView.superDispatchTouchEvent(PhoneWindow.java:1764)at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1213)at android.app.Activity.dispatchTouchEvent(Activity . java:2066)在android.view.ViewRoot.h的com.android.internal.policy.impl.PhoneWindow $ DecorView.dispatchTouchEvent(PhoneWindow.java:1748) andleMessage(ViewRoot.java:1561)位于android.app.AtoT.Thread.main上的android.os.Handler.dispatchMessage(Handler.java:99)android.os.Looper.loop(Looper.java:123)(ActivityThread.java) :3977)at java.lang.reflect.Method.invokeNative(Native Method)at java.lang.reflect.Method.invoke(Method.java:521)at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit) .java:782)在dalvik.system.NativeStart.main(本地方法)的com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)

我无法理解为什么会发生这种情况 - 是否存在内存泄漏?我应该以某种方式发布我失踪的东西吗?请帮助,有很多人因此而无法享受这个免费的开源游戏 . 谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值