【问题标题】:AlarmManager fires every time application launches每次应用程序启动时都会触发 AlarmManager
【发布时间】:2017-06-24 19:16:03
【问题描述】:

我的应用中有这段代码

Calendar calendar = Calendar.getInstance();

          calendar.set(Calendar.HOUR_OF_DAY, 11);
          calendar.set(Calendar.MINUTE, 30);
          calendar.set(Calendar.SECOND, 0);
          calendar.set(Calendar.AM_PM,Calendar.AM);
        //Debug!!!!!
        //calendar.set(Calendar.SECOND, Calendar.SECOND+5);
          Intent myIntent = new Intent(MainActivity.this, MyReceiver.class);
          pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, myIntent,0);

          AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
          alarmManager.setRepeating(AlarmManager.RTC, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY ,pendingIntent);

理论上它会在每天上午 11:30 设置一个警报,但实际上它会在每次应用程序启动时触发此警报,或者当我返回主要活动时。 我想每天在这个特定时间显示这个闹钟

【问题讨论】:

    标签: java android alarmmanager


    【解决方案1】:

    这将在当前时间是上午 11:30 之后立即触发,因为您将 Calendar 对象设置为过去。

    一种解决方案是将您的 Calendar 与当前时间 (System.currentTimeMillis()) 进行比较,如果您的 Calendar 是过去时间,则添加一天。

    【讨论】:

      【解决方案2】:
      alarmManager.setRepeating(AlarmManager.RTC, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY ,pendingIntent);
      

      Here 重复报警的时间由calendar.getTimeInMillis() 函数给出。 这将花费当前时间并且会触发警报。 正确的.. 假设您想在几秒钟后发出警报,那么您必须以毫秒为单位给出时间

      calendar.getTimeInMillis() + 10000; //here 10000 is milliseconds 
      

      因此,当您想发出警报时,首先需要计算以毫秒为单位的时间。 让我们说

      interval = nnnnnnnn; // replace nnnnnn with your time interval in milliseconds
      calendar.getTimeInMillis()+ interval;
      
      alarmManager.setRepeating(AlarmManager.RTC, calendar.getTimeInMillis()+interval, AlarmManager.INTERVAL_DAY ,pendingIntent);
      

      完成... 这种方式我在我的应用程序中使用......试试吧..它适用于你。 如果您需要我的代码... mailto:ramesh.mnnit@gmail.com

      【讨论】:

        【解决方案3】:

        将您的系统时间与闹钟时间进行比较..如果闹钟时间小于等于系统时间接收器将工作..但如果不是那么什么都不会发生...请点击以下链接了解详细信息-Scheduled Notifications Triggers Every Time I Open App

        【讨论】:

          最近更新 更多