Android 设置多个报警以调用服务

Android 设置多个报警以调用服务,android,timer,alarm,Android,Timer,Alarm,因此,我一直在尝试从我的活动中设置多个警报,这将调用我的服务,该服务处理对文本文件的写入。 但无论出于什么原因,我都无法让它正常工作。最简单的形式是: AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE); AlarmManager pm = (AlarmManager)getSystemService(ALARM_SERVICE); PendingIntent myIntent = Pen

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

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();
在这个最新的迭代中,只有最新的一个会在正确的时间调用我的服务。我之前的一个被忽略了

理想情况下,我希望能够在不同的时间从不同的计时器调用相同的服务。我知道上面的代码并不能完全做到这一点,但这实际上只是一个测试,以了解这到底是如何工作的。但正如你所见,事实并非如此。任何帮助都将非常感谢,因为我已经为此奋斗了很长很长时间

在这个最新的版本中,只有最新的版本才会在正确的时间呼叫我的服务。我之前的一个被忽略了

你只设置了一个闹钟

报警由其
未决内容
唯一标识
myIntent
myIntent2
是同一个对象,因为您使用的
getActivity()
具有相同的
Intent

因此,您只设置了一个警报。如果需要两个报警,则需要两个不同的
pendingent
对象

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

另一种方法是向
Intent
对象之一添加一些东西(而不是额外的),比如动作字符串,使其从等价的角度有所不同

在这个最新的版本中,只有最新的版本才会在正确的时间呼叫我的服务。我之前的一个被忽略了

你只设置了一个闹钟

报警由其
未决内容
唯一标识
myIntent
myIntent2
是同一个对象,因为您使用的
getActivity()
具有相同的
Intent

因此,您只设置了一个警报。如果需要两个报警,则需要两个不同的
pendingent
对象

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


另一种方法是在
Intent
对象中添加一些东西(而不是额外的),比如动作字符串,使其从等价的角度来看有所不同。

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