Mam problem z alarm managerem, co robię:
1. Ustawiam alarm na 10 min, wszystko jest ok, alarm uruchamia się co 10 min.
2. Wyłaczam alarm, jest ok - wyłącza się.
Na drugi dzień alarm sam się ustawia na 10 min, podejrzewam że dzieje sie to po połnocy.
Mój kod:
public class AlarmSetters {
static AlarmManager alarmManager;
static PendingIntent pendingIntent;
public static void setForSync(Context context, String prefSyncFrequency){
Integer prefSyncFrequencyValue = Integer.valueOf(prefSyncFrequency);
if (!prefSyncFrequencyValue.equals(0)){
Intent intent = new Intent(context, AlarmSyncReceiver.class);
pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
if (prefSyncFrequencyValue.equals(30) || prefSyncFrequencyValue.equals(10)){
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MILLISECOND, prefSyncFrequencyValue*60*1000);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), prefSyncFrequencyValue*60*1000, pendingIntent);
} else {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MILLISECOND, prefSyncFrequencyValue*60*60*1000);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), prefSyncFrequencyValue*60*60*1000, pendingIntent);
}
} else {
if (alarmManager!=null) {
cancelAlarm(context);
}
}
}
public static void cancelAlarm(Context context)
{
Intent intent = new Intent(context, AlarmSyncReceiver.class);
pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager.cancel(pendingIntent);
}
}