Fix alarm bug

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

Change-Id: I419434ba5908c5f4070608070bbecf753088ecc8
This commit is contained in:
Kurt Partridge 2013-04-14 12:27:29 -07:00
parent 3970352ea9
commit 9d3bbc82a0

View file

@ -22,6 +22,7 @@ import android.app.PendingIntent;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.os.SystemClock;
import com.android.inputmethod.latin.define.ProductionFlag; import com.android.inputmethod.latin.define.ProductionFlag;
@ -79,28 +80,14 @@ public final class UploaderService extends IntentService {
*/ */
public static void cancelAndRescheduleUploadingService(final Context context, public static void cancelAndRescheduleUploadingService(final Context context,
final boolean needsRescheduling) { 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( final AlarmManager alarmManager = (AlarmManager) context.getSystemService(
Context.ALARM_SERVICE); 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); alarmManager.cancel(pendingIntent);
} if (needsRescheduling) {
alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime()
private static void scheduleServiceAlarm(final AlarmManager alarmManager, + UploaderService.RUN_INTERVAL, pendingIntent);
final PendingIntent pendingIntent) { }
alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, UploaderService.RUN_INTERVAL,
pendingIntent);
} }
} }