2013-10-26 73 views
0
Intent in2 = new Intent(context, ReminderService.class); 
PendingIntent pendingIntent2 = PendingIntent.getBroadcast(context, 0, in2, 0); 
AlarmManager alarmManager2 = (AlarmManager)context.getSystemService(context.ALARM_SERVICE); 
alarmManager2.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (5 * 1000), 0, pendingIntent2); 

和reminderservice.java包括下面的代碼這段代碼做了什麼?爲什麼我的鬧鐘沒有停止?

public void onStart(Intent intent, int startId) { 
    super.onStart(intent, startId); 
    Context context = getApplicationContext(); 
    Intent in = new Intent(this, RemindBroadcastReceiver.class); 
    PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, in, 0); 
    AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (5 * 1000), 1000, pendingIntent); 
} 

回答

1

首先我建議你只使用RemindBroadcastReceiver。沒有任何需要ReminderService

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (5 * 1000), 1000, pendingIntent); 

在這裏,你已經設置的重複報警,其每1秒後觸發的。您需要使用alarmManager.set而不是alarmManager.setRepeating

我覺得婁代碼將有助於你:

/------------------- CALLING PART 
     Intent in2 = new Intent("MY_ALARM_ACTION"); 
     PendingIntent pendingIntent2 = PendingIntent.getBroadcast(this, 0, in2, 0); 
     AlarmManager alarmManager2 = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE); 
     //alarmManager2.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (5 * 1000), pendingIntent2); 
     alarmManager2.setRepeating(AlarmManager.RTC_WAKEUP, 
      System.currentTimeMillis() + (5 * 1000), AlarmManager.INTERVAL_DAY, pendingIntent2); 
} 
/------------------- 



/-------------------------- RemindBroadcastReceiver ---------------- 
    public class RemindBroadcastReceiver extends BroadcastReceiver 
    { 
     @Override 
     public void onReceive(Context context, Intent intent) 
     { 
      if (intent.getAction() == "MY_ALARM_ACTION") 
      { 
       // TODO Enter your code here 
      } 
     } 
    } 
+0

和我的鬧鐘使用的用戶Remindercycle功能,所以這就是爲什麼使用它的IM –

+0

意思是說,你要定期觸發報警(反覆在一定的時間間隔)? –

+0

意味着我想每天,每週,每月,每年重複我的警報。 –

0

你沒有解釋你想要這個代碼做,所以我們不能真正知道是什麼,但這些都是一些錯誤,我看反正:

  • 我認爲ReminderServiceService一個子類,因此,你應該使用PendingIntent.getService而非PendingIntent.getBroadcast
  • 在第一塊代碼中,您撥打setRepeatig並將參數intervalMillis = 0,並且從不呼叫AlarmManager.cancel,我猜這是一個錯誤,因爲Android不會永遠觸發您的鬧鐘,不會停止。
  • 爲什麼你要開始一個服務,只有這樣你才能設置另一個鬧鐘來觸發其他內容呢?

請解釋你的代碼的目的。