我正在为Android开发游戏。它使用表面视图并使用提供的标准2D绘图API。当我第一次发布游戏时,我正在做各种愚蠢的事情,比如在每个帧上重新绘制9个补丁,同样用文本。我已经通过绘制到Bitmap对象并在每个帧中绘制它们来优化大部分内容,只在需要时重新绘制到Bitmap对象上。
我之前收到过关于电池耗尽的投诉,并且在我修改之后我想知道(科学地)我是否做了任何改进。不幸的是,我没有任何先前的数据,所以将性能与其他游戏进行比较是最有用的。
我一直在运行Traceview,并且使用它的结果主要是为了识别CPU耗时的方法。
那么 - 确定应用电池性能的最佳方式是什么,以及什么是良好的基准?
我知道我可以通过设置查看不同应用程序的%s,但这又是不科学的,因为我从中获得的数字也取决于所有其他应用程序中发生的情况。我查看了(大部分)Google的文档,虽然消息很清楚,你应该节省电池(并且它偶尔提供了如何提示),但几乎没有迹象表明我是如何可以衡量我的应用程序的表现。我想要的最后一件事是关于Android Market中电池消耗的更多抱怨!
提前致谢。
感谢您提供所有有用的建议/意见。我真正想知道的是如何使用来自Traceview的数据(即:在游戏的每个帧上花费的CPU时间)来确定电池使用量(如果可能的话) 。回想我原来的问题,我可以看到我有点模糊。再次感谢。
答案 0 :(得分:41)
这是我的建议:
我在使用PowerTutor开发我的应用程序(有时以<25ns的速率轮询传感器)时观察功耗。看看它,听起来这可能是你正在寻找的,该应用程序告诉你你在mW,J或相对于系统其他部分使用的是什么。此外,结果由CPU,WiFi,显示器(安装其他无线电)分解。唯一的问题是它是针对特定手机型号编写的,但我在EVO 4G,Galaxy S(Sprint Epic)和Hero上使用它取得了巨大成功。
祝你好运, -Steve答案 1 :(得分:20)
您的游戏可能会耗尽电量。我认为这取决于几个原因,其内容如下:
Thread
的帮助下迭代。您是否限制了FPS以使CPU跳过不必要的迭代?由于您正在使用2D我假设您正在使用SurfaceView
。 60 FPS足以进行实时游戏。Thread
。因此,当您的应用程序不活动时,您会重复代码。wait();
期间,您有迭代锁定 onPause
吗?人们评论说你的游戏正在泄漏电池可能是因为你的应用程序没有被使用。否则,它会很奇怪,因为Android Market上的每个游戏都会耗尽电量 - 更多或更少。
答案 2 :(得分:6)
如果您正在尝试衡量“比以前的版本有所改进”,我认为与其他游戏进行比较并不合理!除非这两个游戏做到了确切的事情,否则这是不科学的。
相反,我会从源代码管理中获取应用程序的先前版本,运行它,测量它,然后使用最新代码运行它并再次进行比较。
要进行比较,您可以使用命令行工具“top”(如果您的手机已植根,则可以在busybox中使用,不确定它是否附带手机。可能不是)。这将显示您的进程的CPU使用率百分比。
答案 3 :(得分:4)
Qualcomm开发了一款名为Trepn Profiler的电池分析器:https://developer.qualcomm.com/mobile-development/increase-app-performance/trepn-profiler
答案 4 :(得分:2)
我如何使用来自Traceview的数据(即:在游戏的每个帧上花费的CPU时间,以毫秒为单位)来确定电池使用情况(如果可能的话)
理论上,可以通过逐帧查看功耗来推断应用的电池使用情况。实现这一目标的最佳方法是在您的应用运行最耗费CPU的操作时,评估CPU(仅限)在给定时段(例如两秒)内的功耗(此外,可以通过这种方式收集GPU功率使用情况)另外)记录TraceView数据(例如每秒帧数或每秒触发数),在给定的毫秒内为您提供跨CPU / GPU的流量。使用此数据,您可以通过运行上述测试几次来准确计算应用程序的平均峰值功耗。
这就是为什么我说这只是理论:有许多变量需要考虑:
我希望这能为你的问题提供一些见解,尽管我可能已经深入了解它。
-Steve
答案 5 :(得分:2)
答案 6 :(得分:0)
“我知道我可以看看%s 通过设置不同的应用程序, 但这又是不科学的 我从中获得的数字也取决于 所有其他事情都发生了什么 应用“。
我要做的第一件事就是寻找已经存在已知且一致的电池使用情况的应用,然后您可以将其用作参考来确定应用的使用情况。
如果没有这样的应用程序,你将不得不希望得到别人的答案......如果你成功制作这样的应用程序,我建议你出售你的新“电池使用参考”应用程序,以便其他程序员可以用它。 :)
答案 7 :(得分:0)
我知道这个问题很老,而且已经很晚了,但是对于那些来这里寻找解决方案的人,我建议你看看JouleUnit测试: http://dnlkntt.wordpress.com/2013/09/28/how-to-test-energy-consumption-on-android-devices/
它集成到eclipse中,并为您提供有关您的应用耗费多少电池的大量详细信息。
答案 8 :(得分:0)
我知道三种可以帮助您采取科学措施的选择:
请注意,对于最近的手机(使用android 6+),它可以在估算模式下运行。如果您需要准确的数字,则需要选择设备的列表。检查以下链接以获取列表: https://developer.qualcomm.com/software/trepn-power-profiler/faq 您可以分别对应用程序以及整个系统进行配置。