Search code examples
androidalarmmanager

Android Alarm Manager not triggered when app is closed


I am trying to set an alarm manager. Here is what i do:

private static AlarmManager alarmManager;
private BroadcastReceiver alarmReceiver;
private PendingIntent alarmIntent;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    alarmReceiver = new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {
              Toast.makeText(context, "Hello", Toast.LENGTH_LONG).show();
              WakeLocker.acquire(context);

        }
    };

    registerReceiver(alarmReceiver, new IntentFilter("com.alarm.wakemeup") );
    alarmIntent = PendingIntent.getBroadcast(this, 0, new Intent("com.alarm.wakemeup"),0 );
    alarmManager = (AlarmManager)(this.getSystemService( Context.ALARM_SERVICE ));
    SetAlarm(getApplicationContext());

}

 public void SetAlarm(Context context)
 {
     alarmManager.set( AlarmManager.RTC_WAKEUP, Calendar.getInstance().getTimeInMillis() + 
             5000, alarmIntent );


 }

This works fine when i just lock the screen: The phone wakes up and toast is written on the screen after 5 seconds. But when i explicitly exit the application, the alarmmanager is not triggered. Any suggestions?

Thanks


Solution

  • As I said in comment, you will need to register the receiver in manifest file.

    So that i will work even if your application is closed.

    Your receiver instance is being destroyed when you exit app as its being created in onCreate

    Hope this helps.