设置多个警报以调用服务

Posted

技术标签:

【中文标题】设置多个警报以调用服务【英文标题】:Setting multiple alarms to call a service 【发布时间】:2012-03-09 23:27:59 【问题描述】:

所以我一直在尝试从我的活动中设置多个警报,这将调用我处理写入文本文件的服务。 但无论出于何种原因,我根本无法让它正常工作。最简单的形式是:

AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
        AlarmManager pm = (AlarmManager)getSystemService(ALARM_SERVICE);
        PendingIntent myIntent = PendingIntent.getService(MyLifeActivity.this, 0, new Intent(MyDogsLifeActivity.this, TimerService.class), 0);

        PendingIntent myIntent2 = PendingIntent.getService(MyLifeActivity.this, 0, new Intent(MyDogsLifeActivity.this, TimerService.class), 0);




Calendar tomorrow = new GregorianCalendar();

          tomorrow.setTimeInMillis(System.currentTimeMillis()); 
          tomorrow.clear(); 
          tomorrow.set(2012,2,9,17,21); // set for today 3/9/2012 at 5:21 PM.

        am.setRepeating(AlarmManager.RTC_WAKEUP, tomorrow.getTimeInMillis(), fONCE_PER_DAY, myIntent);
        Toast.makeText(MyLifeActivity.this, "AM Set for "+ tomorrow.getTime() ,Toast.LENGTH_LONG).show();


        Calendar tomorrow1 = new GregorianCalendar();
        tomorrow1.setTimeInMillis(System.currentTimeMillis()); 
          tomorrow1.clear(); 
          tomorrow1.set(2012,2,9,17,22); // set for today 3/9/2012 at 5:22 PM.


        pm.setRepeating(AlarmManager.RTC_WAKEUP, tomorrow1.getTimeInMillis(), fONCE_PER_DAY, myIntent2);

        Toast.makeText(MyLifeActivity.this, "PM Set for "+ tomorrow1.getTime() ,Toast.LENGTH_LONG).show();

在这个最新的迭代中,只有最新的一个会在正确的时间真正调用我的服务。我之前的那个被忽略了。

理想情况下,我希望能够在不同时间从不同的不同计时器调用相同的服务。我知道上面的代码并没有完全做到这一点,但这实际上只是一个测试,以了解它是如何工作的。但正如你所看到的,它确实没有。任何帮助都将不胜感激,因为我已经为此苦苦挣扎了很长时间。

【问题讨论】:

【参考方案1】:

在这个最新的迭代中,只有最新的那个会在正确的时间真正调用我的服务。我之前的那个被忽略了。

你只设置了一个闹钟。

警报由其PendingIntent 唯一标识。 myIntentmyIntent2 是同一个对象,因为您使用了 getActivity() 和同一个 Intent

因此,您只设置了一个闹钟。如果你想要两个警报,你需要两个不同的PendingIntent 对象。

据说,为getActivity() 的第二个参数提供不同的值(两者都有0)就足够了,尽管我没有尝试过。

另一种方法是向其中一个 Intent 对象添加一些东西(除了额外的),例如操作字符串,以使其不同于等效的观点。

【讨论】:

就是这样!我没有意识到我两次实例化同一个对象。将 0 更改为其他值确实有效。谢谢!

以上是关于设置多个警报以调用服务的主要内容,如果未能解决你的问题,请参考以下文章

alarmManager 设置警报以在准确时间而不是分数工作

如何创建 Azure 警报以通知任何资源删除

从 Nlog 发送电子邮件警报以了解特定异常

如何显示自定义警报以在 ios 中启用通知

添加警报以使用 jquery 制作所需的文本框

Swift如何显示警报以请求照片库的权限?