Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9d3bbc82 authored by Kurt Partridge's avatar Kurt Partridge
Browse files

Fix alarm bug

The AlarmManager takes absolute times as an argument, not durations.

Change-Id: I419434ba5908c5f4070608070bbecf753088ecc8
parent 3970352e
Loading
Loading
Loading
Loading
+6 −19
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.SystemClock;

import com.android.inputmethod.latin.define.ProductionFlag;

@@ -79,28 +80,14 @@ public final class UploaderService extends IntentService {
     */
    public static void cancelAndRescheduleUploadingService(final Context context,
            final boolean needsRescheduling) {
        final PendingIntent pendingIntent = getPendingIntentForService(context);
        final Intent intent = new Intent(context, UploaderService.class);
        final PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, 0);
        final AlarmManager alarmManager = (AlarmManager) context.getSystemService(
                Context.ALARM_SERVICE);
        cancelAnyScheduledServiceAlarm(alarmManager, pendingIntent);
        if (needsRescheduling) {
            scheduleServiceAlarm(alarmManager, pendingIntent);
        }
    }

    private static PendingIntent getPendingIntentForService(final Context context) {
        final Intent intent = new Intent(context, UploaderService.class);
        return PendingIntent.getService(context, 0, intent, 0);
    }

    private static void cancelAnyScheduledServiceAlarm(final AlarmManager alarmManager,
            final PendingIntent pendingIntent) {
        alarmManager.cancel(pendingIntent);
        if (needsRescheduling) {
            alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime()
                    + UploaderService.RUN_INTERVAL, pendingIntent);
        }

    private static void scheduleServiceAlarm(final AlarmManager alarmManager,
            final PendingIntent pendingIntent) {
        alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, UploaderService.RUN_INTERVAL,
                pendingIntent);
    }
}