android – 重复警报调用甚至时间过去了

我创建了报警演示.在那个演示中,我重复一个警报.我的演示中有一个问题.即使时间过去,我的警报也称为服务.我正在设置16:08:00的时间并调用该警报,以便在经过该时间后调用我的警报服务.请帮我停止此标准.

 AlarmManager alarmManager = (AlarmManager)ctx.getSystemService(ctx.ALARM_SERVICE);
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.HOUR_OF_DAY, 16);
        calendar.set(Calendar.MINUTE, 8);
        calendar.set(Calendar.SECOND, 0);   
        PendingIntent pi = createPendingIntent(ctx);
        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24*60*60*1000, pi);

CreatePendingIntent方法

private static PendingIntent createPendingIntent(Context context) 
    {
        Intent myIntent = new Intent(context, MyAlarmService.class);
        return PendingIntent.getService(context,0, myIntent, 0); 

    }

解决方法:

将警报设置为过去时间后,警报会立即弹出.
只需检查当前时间是否大于闹钟时间.如果是这样,请在闹钟时间内添加24小时并设置警报:

long timetoAlarm = calendar.getTimeInMillis();
if (calendar.getTimeInMillis() < System.currentTimeMillis())
{
    timetoAlarm += (24*60*60*1000);
}

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, timetoAlarm, 24*60*60*1000, pi);

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...