我刚刚为Android开发了一个应用程序,它是一款游戏,但我没有使用3D图形。这是一个棋盘游戏,我在屏幕上移动ImageViews。从现在开始,我还没有在移动设备上测试它,只是在模拟器上。问题是,当我在三星Galaxy S2手机上运行我的应用程序(双矿石:()时,CPU使用率上升到85%,该死的手机加热:D当我杀死进程时(完全关闭应用程序,所以它不在后台运行)它下降到0:)
我甚至不知道从哪里开始解决这个问题。你们能给我一个想法吗?
我只能想到可能发生这种情况的两个原因,但它们可能是愚蠢的原因:
有没有办法从模拟器检查内存泄漏或SOMETHING ......
如果有人能就如何解决这个问题提出一些建议,我将不胜感激。
答案 0 :(得分:4)
“我还有2个线程,每个线程都有一个无限的while循环 无限循环并查看消息中是否有任何消息 每个线程的队列“
上述事情对我来说听起来很可疑。您应该真正使用专为此目的而设计的Handler,而不是在自己的线程中使用无限循环。
来自开发者网站:
Handler允许您发送和处理Message和Runnable对象 与线程的MessageQueue相关联。每个Handler实例都是 与单个线程和该线程的消息队列相关联。
Handler有两个主要用途:
- 安排消息和runnables作为某些点执行
- 将要执行的操作排入队列以外的其他线程上 自己的
醇>
此外,Eclipse中的 DDMS 选项卡将为您提供调查CPU过多使用所需的所有工具。