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
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.