1

我刚刚为 Android 开发了一个应用程序,它是一个游戏,但我没有使用 3D 图形。这是一个棋盘游戏,我在屏幕上移动 ImageViews。从现在开始我还没有在移动设备上测试过它,只是在模拟器上。问题是,当我在三星 Galaxy S2 手机上运行我的应用程序时(双矿石:(),CPU 使用率上升到 85% 并且该死的手机升温:D 当我终止进程时(完全关闭应用程序,所以它不在后台运行)它下降到 0 :)

我什至不知道从哪里开始解决问题。你们能给我一个想法吗?

我只能想到两个可能发生这种情况的原因,但它们可能是愚蠢的原因:

  • 除了 UI 线程,我还有 2 个线程,每个线程都有一个无限循环,该循环无限循环并查看每个线程的消息队列中是否有任何消息。会是这样吗?我应该在这些循环中延迟几毫秒,这样它们就不会运行得那么快吗?
  • 我还在屏幕上使用了大约 20-25 个图像视图,我通过触摸来移动它们。这些可能与此有关吗?

有没有办法从模拟器检查内存泄漏或某些东西......?

如果有人可以就我应该如何处理这个问题提供一些建议,我将不胜感激。

4

1 回答 1

4

“我还有 2 个线程,每个线程都有一个无限循环,该循环无限循环并查看每个线程的消息队列中是否有任何消息”

上面的事情对我来说听起来很可疑。与其在自己的线程中使用无限循环,不如真正使用专为此目的设计的Handler 。

来自开发者的网站:

Handler 允许您发送和处理与线程的 MessageQueue 关联的 Message 和 Runnable 对象。每个 Handler 实例都与单个线程和该线程的消息队列相关联。

Handler有两个主要用途:

  1. 安排消息和可运行文件作为未来某个时间点执行
  2. 将要在与您自己的线程不同的线程上执行的操作排入队列

此外, Eclipse 中的DDMS选项卡将为您提供调查 CPU 过度使用所需的所有工具。

于 2012-04-27T09:43:41.923 回答