On Android, you can install AlarmManger to wake up every X milliseconds and run PendingIntent .
This code looks something like this.
AlarmManager mgr=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE); Intent i=new Intent(context, OnAlarmReceiver.class); PendingIntent pi=PendingIntent.getBroadcast(context, 0, i, 0); mgr.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime()+60000, PERIOD, pi);
Android default IntentService , which runs in the background, has some limitations.
You can also look at the WakefulIntentService external library ( https://github.com/commonsguy/cwac-wakeful ). I use this together with AlarmManager to run background tasks.
Update
Class OnAlarmReceiver
public class OnAlarmReceiver extends BroadcastReceiver { public static String TAG = "OnAlarmReceiver"; @Override public void onReceive(Context context, Intent intent) { Log.d(TAG, "Waking up alarm"); WakefulIntentService.sendWakefulWork(context, YourService.class);
Class YourService
public class YourService extends WakefulIntentService { public static String TAG = "YourService"; public YourService() { super("YourService"); } @Override protected void doWakefulWork(Intent intent) { Log.d(TAG, "Waking up service");
source share