显示器关闭时Android设备性能下降

时间:2014-07-02 14:47:35

标签: android performance wakelock

我目前正在开发一个应用程序,它使用GCM向许多设备发送通知,这些设备启动服务以开始轮询RabbitMQ消息队列并对收到的每条消息进行一些处理。我正在使用WakefulBroadcastReceiver来保持设备在服务启动后保持唤醒状态,但是如果设备屏幕关闭而不是我保持打开状态,我会看到显着的性能损失。我还取消选中了“Wi-Fi优化”选项,并确保“在睡眠期间保持Wi-Fi开启”设置为“始终”。

我还缺少其他东西吗?该服务不会完全停止,只要屏幕熄灭,它就会变慢。我是否按下待机按钮或在设定的时间后让它关闭。这些设备混合使用Jelly Bean(4.2.2)和Kit Kat(4.4.2)

提前致谢!

在下面添加了代码段。提到的Worker类只调用另一个执行某些数据处理的类:

public class GcmBroadcastReceiver extends WakefulBroadcastReceiver 
{
    @Override
    public void onReceive(Context context, Intent intent) 
    {
        // Explicitly specify that GcmIntentService will handle the intent.
        ComponentName comp = new ComponentName(context.getPackageName(), GcmIntentServicece.class.getName());

        // Start the service, keeping the device awake while it is launching.
        startWakefulService(context, (intent.setComponent(comp)));
        setResultCode(Activity.RESULT_OK);
    }
}

意图服务'onHandleIntent'方法

@Override
protected void onHandleIntent(Intent intent) 
{
    Bundle extras = intent.getExtras();
    GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(this);

    String messageType = gcm.getMessageType(intent);

    if (!extras.isEmpty())
    {  
         if (GoogleCloudMessaging.MESSAGE_TYPE_MESSAGE.equals(messageType)) 
         {
            String message = extras.getString("message");

            if (message.equals(START_PROCESSING))
            {                 
                Worker worker = new Worker(this, queueServerUrl, Integer.parseInt(queueServerPort), queueName, fileServerUrl);
                Map<String, Integer> results = worker.StartWorking();

                // Update the results
                update(results, jobId);
            }
        }
    }

    // Release the wake lock provided by the WakefulBroadcastReceiver.
    GcmBroadcastReceiver.completeWakefulIntent(intent);
}

0 个答案:

没有答案