首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bitmap.recycle()不工作

bitmap.recycle()不工作
EN

Stack Overflow用户
提问于 2016-06-16 06:56:40
回答 1查看 650关注 0票数 0

我在画布上绘制背景活动(显示大小的背景)有困难,因为OutOfMemoryError导致应用程序崩溃。

我尝试使用循环(),如果我到达循环位图的启动活动,我就将这段代码放入其中。

代码语言:javascript
复制
private void RecyklGO(Bitmap bitmap,Bitmap bitmap2) {
        bitmap.recycle();
        bitmap2.recycle();
    }

但是我在雄激素工作室的记忆里看,我没有看到变化。

接下来,我逐步执行程序,我看到了,.recykle没有运行。

我想要删除的位图告诉游戏结束,如果用户再次点击播放,我想删除这个位图,因为我想要放置背景。(活动在画布上,所以所有的东西都写在上面。没有开关活动,只重写画布。)

谢谢你的任何想法。

_____________ -

代码语言:javascript
复制
bcgGO = BitmapFactory.decodeResource(getResources(), R.drawable.bcg_go);
    bcgGO = Bitmap.createScaledBitmap(
            bcgGO, (int) (srk ), (int) (vsk), false);
    canvas.drawBitmap(bcgGO, srk / 5, vsk / 4.2F, paint);

变量srk和vsk是Bitmap.createScaledBitmap行崩溃应用程序上显示的大小。在这个活动中没有位图。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-16 07:35:12

根据您的输入,我发现了一个问题,因为您的代码是:

代码语言:javascript
复制
bcgGO = BitmapFactory.decodeResource(getResources(), R.drawable.bcg_go);
bcgGO = Bitmap.createScaledBitmap(
        bcgGO, (int) (srk ), (int) (vsk), false);
canvas.drawBitmap(bcgGO, srk / 5, vsk / 4.2F, paint);

在第一行中,您正在创建一个名为bcgGO的位图。但是在第二行,您再次用缩小的位图覆盖它。我认为这给你带来了问题,因为你只是在改写引用。因此,结果是您的主位图仍然在内存中,没有任何参考。对象,并且您不能回收它,因为您没有引用它。如果稍加修改,可能会提高内存性能:

代码语言:javascript
复制
    Bitmapt actBcgGO = BitmapFactory.decodeResource(getResources(), R.drawable.bcg_go);
    bcgGO = Bitmap.createScaledBitmap(
            actBcgGO, (int) (srk ), (int) (vsk), false);
    actBcgGO.recycle();
    canvas.drawBitmap(bcgGO, srk / 5, vsk / 4.2F, paint);

希望它能帮助你:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37851924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档