在特定时间停止警报管理器

时间:2018-07-31 19:15:20

标签: java android alarmmanager

我正在使用Service触发此警报管理器。因此,我想在30分钟后停止警报管理器,因为它会在10分钟后重复出现。在我的情况下,取消不起作用 请帮忙。

             AlarmManager alarmMgr0 = (AlarmManager) 
             getSystemService(Context.ALARM_SERVICE);

            Intent intent0 = new Intent(getApplicationContext(), 
            schedule.class);
            PendingIntent pendingIntent0 = 
            PendingIntent.getBroadcast(getApplicationContext(), 0, intent0, 0);
            Log.e(TAG, "SiteIN called");

            // Intent intent0 = new Intent(this, OldEntryRemover.class);
            Calendar calendar = Calendar.getInstance();
            calendar.setTimeInMillis(System.currentTimeMillis());
            calendar.set(Calendar.HOUR_OF_DAY, 23);
            calendar.set(Calendar.MINUTE,26);
            calendar.set(Calendar.SECOND, 0);

            if(Calendar.getInstance().after(calendar)){
        // Move to tomorrow
            calendar.add(Calendar.DATE, 1);
            }


    //set that timer as a RTC Wakeup to alarm manager object
            // alarmMgr0.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent0);
            alarmMgr0.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
                    10000 * 60, pendingIntent0);

              try {
                 thread.sleep(30000 * 60);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
           alarmMgr0.cancel(pendingIntent0);

1 个答案:

答案 0 :(得分:0)

我将查看API,看看这是否真的是您想要的。

  

安排重复警报。 注意:用于计时操作(刻度,   超时等),使用Handler 会更轻松,更高效。如果   已经为同一IntentSender安排了警报,它将   首先被取消。

     

类似于set(int,long,PendingIntent),除了您还可以提供   警报将自动重复的时间段。 此闹钟   继续重复直到用   cancel(AlarmManager.OnAlarmListener)。如果指定的触发时间在   过去,警报将立即触发,并带有警报计数   取决于过去的触发时间与   重复间隔。

     

如果警报延迟(例如由于系统睡眠而导致的非_WAKEUP)   警报类型),将尽快发送跳过的重复内容。   之后,以后的警报将按照原始警报发送   时间表;他们不会随着时间的流逝而漂移。例如,如果您设置了一个   每小时都会重复发出警报,但电话已入睡   从7:45到8:45,手机会尽快发送警报   唤醒,则下一个警报将在9:00发送。

     

如果您的应用程序希望允许传递时间漂移   为了保证至少一定的时间间隔总是   两次警报之间经过,那么采取的方法是一次性使用   警报,在处理每个警报时自己安排下一个警报   交付。