在服务上实现唤醒锁定

时间:2014-01-21 09:04:20

标签: android android-service android-alarms android-wake-lock

我从AlarmManager onReceive调用服务,下面是实现。我想知道唤醒锁的这种实现是否正常,是否满足我的需求?

这是我的服务类中的onStart函数:

@Override
public void onStart(Intent intent, int startId) {
    WakeLock wakeLock = null;
    try{
        PowerManager mgr = (PowerManager)getApplicationContext()
            .getSystemService(Context.POWER_SERVICE);
        wakeLock = mgr.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakeLock");
        wakeLock.acquire();
        //For time consuming an long tasks you can launch a new thread here
        Toast.makeText(this, " Service Started", Toast.LENGTH_LONG).show();
    }catch(Exception e){
    }finally{
        wakeLock.release();
    }
}

1 个答案:

答案 0 :(得分:0)

是的,这应该可以正常工作。虽然如果你启动一个新线程它将不起作用,在这种情况下,{Thread}完成之前将调用wakelock.release()

您可能想查看CommonsWare的Wakeful service。该服务为您处理唤醒锁,确保您在服务期间有一个唤醒锁,并在您停止服务后立即释放它。