1 /* 2 * Copyright (C) 2020 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.server.location.injector; 18 19 import android.app.AlarmManager.OnAlarmListener; 20 import android.os.WorkSource; 21 22 import com.android.internal.util.Preconditions; 23 24 /** 25 * Helps manage alarms. 26 */ 27 public abstract class AlarmHelper { 28 29 /** 30 * Sets a wakeup alarm that will fire after the given delay. 31 */ setDelayedAlarm(long delayMs, OnAlarmListener listener, WorkSource workSource)32 public final void setDelayedAlarm(long delayMs, OnAlarmListener listener, 33 WorkSource workSource) { 34 // helps ensure that we're not wasting system resources by setting alarms in the past/now 35 Preconditions.checkArgument(delayMs > 0); 36 setDelayedAlarmInternal(delayMs, listener, workSource); 37 } 38 setDelayedAlarmInternal(long delayMs, OnAlarmListener listener, WorkSource workSource)39 protected abstract void setDelayedAlarmInternal(long delayMs, OnAlarmListener listener, 40 WorkSource workSource); 41 42 /** 43 * Cancels an alarm. 44 */ cancel(OnAlarmListener listener)45 public abstract void cancel(OnAlarmListener listener); 46 } 47