我在画布上绘制背景活动(显示大小的背景)有困难,因为OutOfMemoryError导致应用程序崩溃。
我尝试使用循环(),如果我到达循环位图的启动活动,我就将这段代码放入其中。
private void RecyklGO(Bitmap bitmap,Bitmap bitmap2) {
bitmap.recycle();
bitmap2.recycle();
}但是我在雄激素工作室的记忆里看,我没有看到变化。
接下来,我逐步执行程序,我看到了,.recykle没有运行。
我想要删除的位图告诉游戏结束,如果用户再次点击播放,我想删除这个位图,因为我想要放置背景。(活动在画布上,所以所有的东西都写在上面。没有开关活动,只重写画布。)
谢谢你的任何想法。
_____________ -
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行崩溃应用程序上显示的大小。在这个活动中没有位图。
发布于 2016-06-16 07:35:12
根据您的输入,我发现了一个问题,因为您的代码是:
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的位图。但是在第二行,您再次用缩小的位图覆盖它。我认为这给你带来了问题,因为你只是在改写引用。因此,结果是您的主位图仍然在内存中,没有任何参考。对象,并且您不能回收它,因为您没有引用它。如果稍加修改,可能会提高内存性能:
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);希望它能帮助你:)
https://stackoverflow.com/questions/37851924
复制相似问题