package tinygsn.services; import android.app.AlarmManager; import android.app.IntentService; import android.app.PendingIntent; import android.content.Intent; import android.util.Log; import tinygsn.beans.DeliveryRequest; import tinygsn.model.publishers.AbstractDataPublisher; import tinygsn.storage.db.SqliteStorageManager; public class PublisherService extends IntentService { public PublisherService() { super("tinyGSN publisher"); } @Override protected void onHandleIntent(Intent intent) { AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); SqliteStorageManager storage = new SqliteStorageManager(); long next_run = 10 * 60 * 1000L; //at least once every 10 minutes try { for (DeliveryRequest dr : storage.getPublishList()) { try { if (dr.isActive()) { AbstractDataPublisher adp = AbstractDataPublisher.getPublisher(dr); adp.runOnce(); next_run = Math.min(next_run, adp.getNextRun()); } } catch (Exception e1) { Log.e("PublisherService", e1.getMessage()); } } } catch (Exception e) { Log.e("PublisherService", e.getMessage()); } am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + next_run, PendingIntent.getService(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)); } }