我正在编写简单的游戏。绘制/更新抛出实时模型,因此CPU总是高负载。线程看起来如此:
@Override
public void run() {
while (true) {
if (!mRun) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {};
} else {
Canvas c = null;
try {
c = mSurfaceHolder.lockCanvas(null);
synchronized (mSurfaceHolder) {
..update game objects..
if (canvas != null) {
..draw to canvas...
}
}
} finally {
if (c != null) {
mSurfaceHolder.unlockCanvasAndPost(c);
}
}
}
}
}
问题是工作所以应用程序会吃电池。在我的Galaxy S2上,它在PC USB的同一时刻消耗得比充电快。
我做错了什么,或者游戏没问题?
答案 0 :(得分:3)
从PC中的USB端口充电将非常慢(USB也在传输数据,而不仅仅是电源)。我认为游戏使用的电量比连接到PC USB端口时的电量要好。
答案 1 :(得分:1)
手机的放电电流取决于它的作用(特别是应用正在做什么)。通常屏幕消耗大部分功率,应用程序的颜色(白色与黑色是一个很大的区别),亮度级别会产生很大的影响。如果你同时消耗CPU(可能还有数据),肯定会产生影响。
在我们对“愤怒的小鸟”进行性能分析的测试中,我们已经看到它表现得非常好并且不会消耗太多的功率(包括CPU消耗)。而且它们通常也使用稍暗的颜色。而且他们的数据消费通常只有在有广告的时候(这是一个很大的消费者,而且我们注意到他们最近确实增加了广告)。
我会检查您的应用的哪些组件正在耗尽电池,看看它是否可以进行优化。如果您有兴趣,请尝试使用像Little Eye这样的分析工具(免责声明:我是构建此工具的公司的联合创始人),以查看应用程序的哪个部分(或部件使用情况)耗尽电池。