我使用AndEngine开发了我的游戏并且有一个严重的问题。用户报告说游戏加热设备过多而耗尽电池。我不明白为什么会发生这种情况因为游戏只是简单的谜题而且我不使用复杂的动画或物理。此外,我禁用了sprite主要部分的更新并设置了wakelock选项:
engineOptions.setWakeLockOptions(WakeLockOptions.SCREEN_ON);
但这没有帮助。 你可以在这里看到游戏:https://play.google.com/store/apps/details?id=com.icecat.hex
我很乐意询问有关代码的任何问题。请写下您对可能导致此问题的可能问题或引擎设置的看法。
答案 0 :(得分:1)
内容:
•从不轮询用户输入
•检查用户输入最多> 250毫秒
•轮询会降低您的电源效率
•检查用户输入<250毫秒不会提供更快的响应时间,并会对您的电源效率产生负面影响
详情:
要检查的是您如何等待用户输入。我相信ARM Cortext A8处理器架构(我认为是S2的基础)具有先进的电源管理功能。我的意思是它具有处理器空闲功率状态,这意味着处理器将在没有做任何事情(如等待用户输入)时进入休眠状态。
非常常见的错误是轮询或检查输入太多。我们对自己说“我需要尽快响应用户事件”,然后轮询或中断以检查<10毫秒周期的输入。
这有两个问题。最快的人类响应是> .25秒。当我们包括用户方面的任何想法时,这变为> .5sec。
这有一些大问题,其中一个可能导致您的问题:
最佳用户响应为&gt; .25sec
添加您的程序计算,您的应用响应的下限可能是&gt;&gt; .25sec
最重要的是,进行过度检查可防止处理器进入睡眠状态,进入睡眠状态是处理器节省大部分电量的方式。进入睡眠状态并且唤醒对性能几乎没有影响,因为处理器没有按照定义做任何事情并且唤醒没有引入显着的延迟(&lt;&lt; 500usec并且可能接近100usec)。
如果您想了解更多信息,请查看“List of Useful Power and Power Management Articles, Blogs and References”。后面的工作参考了HPC(高性能计算)和英特尔架构,但原理和技术适用于所有现代处理器,包括平板电脑和手机。