Call A Method Every X Minutes
Solution 1:
You might want to consider something like this:
Intentintent=newIntent(this, MyService.class);
PendingIntentpintent= PendingIntent.getService(this, 0, intent, 0);
AlarmManageralarm= (AlarmManager)getSystemService(Context.ALARM_SERVICE);
// Start every 30 seconds
alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 30*1000, pintent);
If you are unclear, go through this tutorial
Solution 2:
Write a IntentService. Inside it, just start a new Thread. In the Thread.run(), put an infinite while loop to call your notification code and Thread.sleep(15 * 60 * 1000)....
Solution 3:
If you want to schedule your tasks with the specified interval don't use flags AlarmManager.RTC and AlarmManager.RTC_WAKEUP with method alarm.setRepeating(...). Because in this case alarm will be bounded to the device's real time clock. So changing the system time may cause alarm to misbehave. You must use flags AlarmManager.ELAPSED_REALTIME or AlarmManager.ELAPSED_REALTIME_WAKEUP. In this case SystemClock.elapsedRealtime() will serve as a basis for scheduling an alarm.
The code will look like:
alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + checkIntervalMillis, checkIntervalMillis, pendingIntent);
If you want your long running task to be executed when device in the sleep mode I recommend to use WakefulIntentService library by CommonsWare: https://github.com/commonsguy/cwac-wakeful
Post a Comment for "Call A Method Every X Minutes"