Android系统。 CPU使用率太高

时间:2012-04-27 09:36:11

标签: java android cpu cpu-usage

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

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

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

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

有没有办法从模拟器检查内存泄漏或SOMETHING ......

如果有人能就如何解决这个问题提出一些建议,我将不胜感激。

1 个答案:

答案 0 :(得分:4)

  

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

上述事情对我来说听起来很可疑。您应该真正使用专为此目的而设计的Handler,而不是在自己的线程中使用无限循环。

来自开发者网站:

  

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

     

Handler有两个主要用途:

     
      
  1. 安排消息和runnables作为某些点执行   
  2.   
  3. 将要执行的操作排入队列以外的其他线程上   自己的
  4.   

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

相关问题