package com.erakk.lnreader.service; import java.util.Calendar; import java.util.Date; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; public class AutoBackupScheduleReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { reschedule(context); } public static void reschedule(Context context) { long repeatTime = 86400000L; if (repeatTime > 0) { Log.d(AutoBackupService.TAG, "Setting up schedule"); AlarmManager service = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); Intent intent = new Intent(context, AutoBackupStartServiceReceiver.class); PendingIntent pending = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT); // Start repeatTime seconds after boot completed Calendar cal = Calendar.getInstance(); cal.add(Calendar.SECOND, 60); Date nextRun = new Date(cal.getTimeInMillis() + repeatTime); // InexactRepeating allows Android to optimize the energy consumption Log.i(AutoBackupService.TAG, "Repeating in: " + nextRun); // service.setInexactRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), repeatTime, pending); service.set(AlarmManager.RTC, nextRun.getTime(), pending); } else { removeSchedule(context); } } public static void removeSchedule(Context context) { Log.i(AutoBackupService.TAG, "Canceling Schedule"); AlarmManager service = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); Intent intent = new Intent(context, AutoBackupStartServiceReceiver.class); PendingIntent pending = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT); service.cancel(pending); } }