AlarmManager estados Javadoc de Androidbloqueo de la estela de AlarmManager al iniciar un servicio
When an alarm goes off, the Intent that had been registered for it is broadcast by the system,
Hay una (com.example.android.apis.app paquete) AlarmService
en las demostraciones del API proporcionadas con Android que demuestran AlarmService en utilizar.
En él tenemos la siguiente (editado para mayor claridad):
PendingIntent mAlarmSender = PendingIntent.getService(AlarmService.this,
0, new Intent(AlarmService.this, AlarmService_Service.class), 0);
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime, 30*1000, mAlarmSender);
Así que en este ejemplo no lo hace un lugar PendingIntent mAlarmSender = PendingIntent.getBroadcast(...);
Se hace un getService
el que el Javadoc nunca se alude a.
La razón por la que estoy preguntando sobre esto es debido a las implicaciones del bloqueo de activación de CPU. El Javadoc dice que el bloqueo de activación de AlarmManger se liberará una vez que regrese el onReceive()
de un receptor de Broadcast.
Lo que me pregunto es cuáles son las implicaciones de bloqueo de vigilia si utiliza una alarma como en el ejemplo? El Javadoc no parece abordar esto. En todo caso, parece implicar que debes usar la técnica de transmisión cuando estableces alarmas.
respuesta perfecta - gran archivo adjunto. Muchas gracias – Tim
también ... ¿cuál es la mejor manera de cancelar un WakefulIntentService? – Tim
@Tim: No estoy seguro de lo que quiere decir con "cancelar un WakefulIntentService". Puede cancelar la alarma mediante 'cancel()' en 'AlarmManager'. – CommonsWare