1

我正在编写简单的游戏。绘制/更新 go throw 实时模型,因此 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 上同时充电更快。

我做错了什么,还是游戏没问题?

4

2 回答 2

3

从 PC 中的 USB 端口充电会很慢(USB 也在传输数据,而不仅仅是电源)。我认为游戏使用比连接到 PC USB 端口时接收的更多电量是可以的。

于 2013-06-23T23:07:35.943 回答
1

手机的放电电流取决于它在做什么(尤其是应用程序在做什么)。通常,屏幕会消耗很大一部分电量,而应用程序的颜色(白色与黑色差别很大)和亮度级别会产生很大影响。而且,如果您同时消耗 CPU(可能还有数据),它们肯定会产生影响。

在我们对 Angry Birds 进行功率分析的测试中,我们看到它表现得非常好,并且不会消耗太多功率(包括 CPU 消耗)。而且他们通常也使用稍深的颜色。而且他们的数据消耗通常仅在有广告时才会消耗(这是一个大消费者,我们注意到他们最近肯定有所增加)。

我会检查你的应用程序的哪些组件正在耗尽电池,看看它是否可以优化。如果您有兴趣,请尝试使用诸如 Little Eye 之类的分析工具(免责声明:我是构建此工具的公司的联合创始人),以查看您的应用程序的哪个部分(或硬件组件的使用)正在耗尽电池电量。

于 2013-06-25T02:43:00.393 回答