电池使用,该期望什么?

8

我正在为Android开发一个2D游戏,最近在考虑优化。

我在设置中查看了电池使用情况,发现在将我的游戏保持在前台(屏幕开启)超过一个小时后,我已经耗尽了11%的电量(Motorola Xoom Honeycomb)。

这是用户应该期望在他们的手机/平板电脑上玩游戏时出现的情况吗?

一些信息:

  • 我的游戏使用Opengl-es进行渲染(连续渲染)

  • 逻辑运行在单独的线程中以提高性能。

  • 我使用getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);认为这是必要的,因为游戏需要用户思考时间。

  • 简单粒子

那么,这种电池消耗对于一款游戏来说是否正常?

我可以采取哪些步骤来减少电池消耗?


@BicycleDude 这是个不错的想法。在游戏的某些部分仍需要良好的 30 帧每秒,但听起来很不错。 - Jack
@Jack:是的,对于你的目的来说,使用Thread.wait(timeout)或者Thread.sleep(timeout)基本上是一样的。 - Tudor
@gravitron 这是我目前正在做的事情。在游戏过程中的某些部分,游戏需要保持恒定的帧率,但在其他时候,游戏玩法有点像下棋,也就是只有在输入时才会发生事件。这是否意味着我可以在这些部分睡眠整个线程并等待输入? - Jack
@DaveNewton 那是非常正确的。 - Jack
@Jack,就是这样了。顺便说一下,在回顾时我认为sleep是更好的选择。如果您不需要更新屏幕,那么安排一些暂停可能是合适的。实际上,我建议每次暂停1秒钟。因此,您至少可以实现一个思考时钟,每秒更新一次UI。 - Stephen Quan
显示剩余5条评论
2个回答

0

仅单独让屏幕开启(而不运行游戏)将会产生类似的电池使用情况。

我给你的建议是,每当游戏暂停或用户在一段时间内未触摸屏幕时,将屏幕设置为昏暗,而不是保持全亮状态。

您可以通过调整screenBrightness/buttonBrightness来实现这一点,

这些字段的范围是0->1

您可以在这里查看设置的上下文。


但是屏幕的电池使用情况不是会在图表中有自己的部分吗?(根据我的统计数据,它使用了43%的电池) - Jack
是的!它确实会。这仍然会对总电池使用量产生影响。除此之外,我建议阅读BicycleDude所建议的文章:http://developer.android.com/training/monitoring-device-state/index.html - user1200540
需要注意的一点是,如果用户将亮度设置为“自动”,则调暗屏幕可能无法正常工作(尽管目前这不是优先考虑的问题)。 - Basic

0
Justin的答案很好,但不要忘记一些老派基础知识。
让程序繁忙等待也会耗费电池。你必须使用CPU来推进游戏,但没有必要让它繁忙等待。确保将处理过程挂起,直到下一轮游戏处理周期的预计时间。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接