2013-05-17 56 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

也許會告訴我們取消代碼 - 很難知道你是否做了同樣的事情 –