0

我使用 AndEngine 开发了我的游戏,但遇到了一个严重的问题。用户向我报告说游戏加热设备太多并耗尽电池。我不明白为什么会这样,因为游戏只是简单的谜题,我不使用复杂的动画或物理。此外,我禁用了大部分精灵的更新并设置了唤醒锁选项:

engineOptions.setWakeLockOptions(WakeLockOptions.SCREEN_ON);

但这无济于事。你可以在这里看到游戏:https: //play.google.com/store/apps/details?id=com.icecat.hex

我很乐意询问有关代码的任何问题。请写下您对可能导致此问题的可能问题或引擎设置的看法。

4

1 回答 1

1

概括:

• 从不轮询用户输入

• 最多检查用户输入 >250 毫秒

• 轮询会扼杀您的能源效率

• 检查用户输入 <250 毫秒不会提供更快的响应时间,并且会对您的电源效率产生负面影响

细节:

要检查的是您如何等待用户输入。我相信 ARM Cortext A8 处理器架构(我认为是 S2 的基础)具有先进的电源管理功能。我的意思是它具有处理器空闲电源状态,这意味着处理器将在不执行任何操作(例如等待用户输入)时进入睡眠状态。

一个非常常见的错误是轮询或检查输入过多。我们对自己说“我需要尽快响应用户事件”,然后轮询或中断以在 <10 毫秒的周期内检查输入。

这有两个问题。最快的人类反​​应是 >.25 秒。当我们包含用户的任何想法时,这将变为 >.5 秒。

这有几个大问题,其中一个可能会导致您的问题:

  • 最佳用户响应 >.25 秒

  • 加上你程序的计算,你的应用响应的下限可能是>>.25sec

  • 最重要的是,进行过多的检查可以防止处理器进入睡眠状态,而进入睡眠状态是处理器节省大部分电量的方式。进入睡眠和唤醒对性能几乎没有影响,因为处理器按照定义没有做任何事情,并且唤醒不会引入明显的延迟(<<500usec 并且可能更接近 100usec)。

如果您想了解更多信息,请查看“有用的电源和电源管理文章、博客和参考资料列表”。后来的工作参考了 HPC(高性能计算)和英特尔架构,但原理和技术适用于所有现代处理器,包括平板电脑和手机。

于 2014-04-21T16:10:19.670 回答