2013-05-17 53 views
0

我希望我的应用程序每天早上9点开始。为此,我从每天早上九点开始使用setRepeatingAlarm()开始Alarm_1。使用3个闹钟启动和停止服务

manager.setRepeating(AlarmManager.RTC_WAKEUP, 
    timeOn.getTimeInMillis(), 86400000,startingIntent); 

从alarm_1开始,以1分钟间隔重复启动我的服务的另一个警报MainAlarm。

manager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, 
    SystemClock.elapsedRealtime(), duration, MainActivity.mainIntent); 

我希望我的应用程序每天晚上9点停下来。

为此,我使用setRepeatingAlarm()开始Alarm_2,cancel() MainAlarm每天晚上9点。

但是,这不能按预期工作。

应该做什么?是否有任何问题,因为我正在使用3个闹钟?

第二天闹钟不起作用。

 This is my cancel() code: 
      public class AlarmReceiver2 extends BroadcastReceiver { 
      @Override 
      public void onReceive(Context context, Intent intent) { 
     AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
     manager.cancel(MainActivity.mainIntent); 
     MainActivity.mainIntent.cancel(); 
      } 
     } 

回答

0

首先,我不认为有3个闹钟有问题。

其次,也许你可以添加你用来尝试和取消的代码。这里的一个窍门就是你需要你的PendingIntent与你用来启动闹钟的那个相同 - 这就是为什么看到取消代码会很有用。


看一看我的答案在这里一个相关的问题:


的问题是非常相似,我不觉得我应该复制整个答案,但这里是一个摘要链接到@commonsware答案:


下面的答案从AlarmManager How to cancel this repeating alarm?

呼叫cancel()复制具有同等的PendingIntent给您setRepeating()使用的一个:

Intent intent = new Intent(this, AlarmReceive.class); 
PendingIntent sender = PendingIntent.getBroadcast(this, 
       0, intent, 0); 
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 

alarmManager.cancel(sender); 
+0

我不能做同样的事情? – user2310041

+0

也许会告诉我们取消代码 - 很难知道你是否做了同样的事情 –