首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >背景图像降低了android应用程序的运行速度

背景图像降低了android应用程序的运行速度
EN

Stack Overflow用户
提问于 2011-04-11 06:46:38
回答 1查看 2.1K关注 0票数 1

我是开发android应用程序的新手。我正在制作一个简单的对象移动的应用程序。问题出在背景上。当我像这样放入代码时:

代码语言:javascript
复制
protected void onDraw(Canvas canvas) {
    BackGround1 = BitmapFactory.decodeResource(getResources(), R.drawable.lightning1);
    canvas.drawBitmap(BackGround1, 0, 0, null);
    canvas.drawCircle(xp, yp, circleRadius, circlePaint);
}

移动的物体(圆圈)明显减慢,过了一段时间(比如20秒),开始出现圆圈的痕迹,然后(~10秒)“崩溃”,回到之前的活动。

如果我把

canvas.drawColor(Color.BLACK);

而不是

canvas.drawBitmap(BackGround1, 0, 0, null);,那么一切都很好。lightning1是480x800jpg的图像。

有人能告诉我我哪里做错了吗?

代码语言:javascript
复制
04-11 02:00:50.722: ERROR/dalvikvm-gc(13262): Could not create 1097728-byte ashmem mark stack: Too many open files
04-11 02:00:50.722: ERROR/dalvikvm-heap(13262): dvmHeapBeginMarkStep failed; aborting
04-11 02:00:50.722: ERROR/dalvikvm(13262): VM aborting
04-11 02:00:50.902: ERROR/ActivityManager(92): fail to set top app changed!
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-11 06:51:47

每次绘制表面时,您都在对资源进行解码。这会创建许多新的Bitmap对象,而安卓有足够多的工作来运行垃圾收集器来清理你的垃圾。

您可能只想加载资源一次,并将其存储在字段中。

在更一般的意义上,您可以随时查看Logcat以找出导致强制关闭的原因。我假设你会得到一个OutOfMemoryException

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

https://stackoverflow.com/questions/5615224

复制
相关文章

相似问题

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