问题描述
我创建了一个名为“ VIAlarmManager”的类,在其中创建了AlarmManager并设置了一些属性。 但是无论如何,警报不会触发,我做错什么了吗? 我尝试调用以给定间隔(例如1分钟/ 2分钟/ 15分钟)重复执行的任务,并且该任务也应在睡眠时执行。
这是我的代码:
public final class VIAlarmManager{
public static AlarmManager alarmManager;
public int freq = 60;
public VIAlarmManager(int freq_in_sec){
this.freq = freq_in_sec;
}
public void setFrequency(int freq_in_sec){
this.freq = freq_in_sec;
}
public void setAlarm(){
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.MINUTE, 1);
alarmManager = (AlarmManager) MainActivity.Context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(MainActivity.Context, VIAlarmManager.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.Context, 0, intent, 0);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),1000 * 60 * 1, pendingIntent);
}
public void cancleAlarm(){
Intent intent = new Intent(MainActivity.Context, VIAlarm_Heartbeat.class);
PendingIntent sender = PendingIntent.getBroadcast(MainActivity.Context, 0, intent, 0);
AlarmManager alarmManager = (AlarmManager) MainActivity.Context.getSystemService(Context.ALARM_SERVICE);
alarmManager.cancel(sender);
}
public static class VIAlarm_Heartbeat extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Log.w("AlarmManager", "Calling Heartbeat now");
MainActivity.beat.beat();
}
}}
我的AndroidManifest包含以下行:
<receiver android:name="com.videro.util.VIAlarmManager$VIAlarm_Heartbeat" android:enabled="true" ></receiver>
在我的主要活动中,我称:
AlarmManager = new VIAlarmManager(60);
AlarmManager.setAlarm();
1楼
如果您需要一个简单的警报,则经典方法是使用带有TimePicker
的Activity来选择时间,并使用BroadcastReceiver来触发警报以及使用Service来向用户发送通知。
是您如何做到的可行方法! 希望能帮助到你:)