-1

アラームマネージャキューを作成できない理由がわかりません。最初のアラームが発生すると、他のアラームは時間に合わないカスケードで続きます。[スタート]ボタンをクリックしたときに呼び出されるコードは次のとおりです。

final AlarmManager[] alarmManager=new AlarmManager[50];    
Integer i =0;
final Calendar calendar = Calendar.getInstance();
public void onClick(View arg0) {

            Intent myIntent = new Intent(AndroidAlarmSMS.this, 
                                         MyAlarmService.class);

            pendingIntent = PendingIntent.getService(AndroidAlarmSMS.this, i, 
                                                     myIntent, 0);

             thatDay.set(dataPick.getYear(), dataPick.getMonth(),dataPick.getDayOfMonth(), timePicker1.getCurrentHour(), timePicker1.getCurrentMinute());

            calendar.setTimeInMillis(System.currentTimeMillis());

            long diff = (thatDay.getTimeInMillis()- calendar.getTimeInMillis());

            int sec =   (int) (diff / 1000 % 60);

                      calendar.add(Calendar.SECOND,sec);//Sec it's the difference between time selected and now
          alarmManager[i] = (AlarmManager)getSystemService(ALARM_SERVICE);
          alarmManager[i].set(AlarmManager.RTC_WAKEUP, 
                      calendar.getTimeInMillis(), pendingIntent);


           i++; 

}
4

1 に答える 1

0

あなたはすべてのアラームをcalendarその時に発生するように設定しています、私はあなたが使用するつもりだったと推測していますthatDay

alarmManager[i].set(AlarmManager.RTC_WAKEUP, thatDay.getTimeInMillis(), pendingIntent);

私はいくつかのメモがあります:

  • AlarmManagerは1つしかないためalarmManager、同じシステムサービスのコピーが最大50個含まれます。
  • インデックスiはユーザーのアクションに依存しており、50未満または50を超えるアラームが発生する可能性があります。ArrayListとを使用する必要がありadd()ます。
于 2012-12-04T00:16:52.207 に答える