¿Cómo iniciar el servicio usando Alarm Manager en Android?

En mi aplicación, bash iniciar un servicio usando el administrador de alarmas. Cuando estoy haciendo clic en un botón, el servicio debe comenzar en un momento particular que estoy dando. Mi código para Alarm Manager se da a continuación:

public void onClick(View view) { if(view == m_btnActivate) { Calendar cur_cal = Calendar.getInstance(); cur_cal.setTimeInMillis(System.currentTimeMillis()); cur_cal.add(Calendar.SECOND, 50); Log.d("Testing", "Calender Set time:"+cur_cal.getTime()); Intent intent = new Intent(DashboardScreen.this, ServiceClass.class); Log.d("Testing", "Intent created"); PendingIntent pi = PendingIntent.getService(DashboardScreen.this, 0, intent, 0); AlarmManager alarm_manager = (AlarmManager)getSystemService(Context.ALARM_SERVICE); alarm_manager.set(AlarmManager.RTC, cur_cal.getTimeInMillis(), pi); Log.d("Testing", "alarm manager set"); Toast.makeText(this, "ServiceClass.onCreate()", Toast.LENGTH_LONG).show(); } } 

Y a continuación está mi clase de servicio:

  public class ServiceClass extends Service{ @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); Log.d("Testing", "Service got created"); Toast.makeText(this, "ServiceClass.onCreate()", Toast.LENGTH_LONG).show(); } @Override public IBinder onBind(Intent arg0) { // TODO Auto-generated method stub return null; } @Override public void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); } @Override public void onStart(Intent intent, int startId) { // TODO Auto-generated method stub super.onStart(intent, startId); Toast.makeText(this, "ServiceClass.onStart()", Toast.LENGTH_LONG).show(); Log.d("Testing", "Service got started"); } } 

Si el servicio se inicia debe imprimir los mensajes de registro en la clase de servicio. Pero no está mostrando. ¿Alguien puede ayudar?

Esto es lo que he usado para iniciar el servicio después de 30 segundos de la hora actual,

 Intent intent = new Intent(DashboardScreen.this, ServiceClass.class); PendingIntent pintent = PendingIntent.getService(DashboardScreen.this, 0, intent, 0); AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE); alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 30*1000, pintent); 

Pruébalo y avísame qué pasará …

EDITAR:

En su archivo manifest.xml

   

Sé que esta es una vieja pregunta, pero solo para ayudar a la gente de Google, aquí es cómo puedes mantener tu servicio con vida.

  Intent ishintent = new Intent(this, HeartBeat.class); PendingIntent pintent = PendingIntent.getService(this, 0, ishintent, 0); AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE); alarm.cancel(pintent); alarm.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(),5000, pintent); 

El servicio se cancela y se reinicia cada 5 segundos.