Skip to content

Commit

Permalink
Actually properly trigger interval-jobs
Browse files Browse the repository at this point in the history
Signed-off-by: Felix Nüsse <[email protected]>
  • Loading branch information
newhinton committed Mar 22, 2023
1 parent 17e195a commit a0c2147
Showing 1 changed file with 28 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,15 @@ public void queueTrigger(){
}

public void queueSingleTrigger(Trigger trigger){
if(trigger.getType() == Trigger.TRIGGER_TYPE_SCHEDULE) {
queueSingleScheduleTrigger(trigger);
} else {
queueSingleIntervalTrigger(trigger);
}

}

private void queueSingleScheduleTrigger(Trigger trigger){
if(trigger.isEnabled()){
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
Expand Down Expand Up @@ -77,7 +86,7 @@ public void queueSingleTrigger(Trigger trigger){

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
boolean allowWhileIdle = sharedPreferences.getBoolean(context.getString(R.string.shared_preferences_allow_sync_trigger_while_idle), false);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && allowWhileIdle) {
if (allowWhileIdle) {
am.setExactAndAllowWhileIdle(
AlarmManager.RTC_WAKEUP,
timeToTrigger,
Expand All @@ -90,7 +99,24 @@ public void queueSingleTrigger(Trigger trigger){
pi
);
}
return;
}
}

private void queueSingleIntervalTrigger(Trigger trigger){
if(trigger.isEnabled()){

int intervalMillis = trigger.getTime() * 60 * 1000;
long timeToTrigger = System.currentTimeMillis();

AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
PendingIntent pi = getIntent(trigger.getId());
am.cancel(pi);
am.setInexactRepeating(
AlarmManager.RTC_WAKEUP,
timeToTrigger+intervalMillis,
intervalMillis,
pi
);
}
}

Expand Down

0 comments on commit a0c2147

Please sign in to comment.