我目前正在开发一个使用 Handler & WakeLock 每 30 分钟启动一次活动的应用程序。但我想知道这种方法的可靠性。我确实检查了这篇文章,但它似乎没有回答我的问题。这是我用来保持服务活跃和运行的代码:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "MyWakelockTag");
wakeLock.acquire();
final Runnable runnable = new Runnable() {
@Override
public void run() {
Intent sendMessage = new Intent();
sendMessage.setAction(LAWAY);
sendMessage.setClass(LAWAYService.this, LReceiver.class);
sendBroadcast(sendMessage);
}
};
handler.postDelayed(runnable, DURATION);
return START_STICKY;
}
这有多可靠?我将它与WakefulBroadcastReceiver
. 到目前为止,它可以与我测试过的三款设备一起使用,包括三星 Galaxy Note 5、谷歌 Pixel XL 和 Nexus 6P。
我发现这会消耗大量电池。有更环保的解决方案吗?