0

コードに問題があります。日付と時刻のリストがあります。forループでSQLiteからすべての日付と時刻を取得します。プログラムを実行すると、すべての日時に AlarmManager がトリガーされるわけではありません。最後に追加されたアラームのみを受信しました。ここにコードがあります:

            private void setAlarm() {
            // TODO Auto-generated method stub
            DbHandler dbHandler =new DbHandler(getApplicationContext());
            list_alarm = dbHandler.getDateOnly();
            Log.d("00000", list_alarm.size()+"");
            if(list_alarm.size() > 0){
                for(int i=0;i<list_alarm.size();i++){
                    String dat = list_alarm.get(i).getTaskDate();
                    String pat = list_alarm.get(i).getTaskTime();
                    String strDnT = dat+" "+pat;
                    SimpleDateFormat format;
                    Date date1;
                    long d;
                    format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
                    try {
                        date1 = (Date)format.parse(strDnT);
                        d = date1.getTime();
                        Intent k = new Intent(Create_Task.this, AlarmReceiver.class);
                        PendingIntent intent = PendingIntent.getBroadcast(getApplicationContext(), RQS_1, k, 0);
                        AlarmManager managers = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
                        managers.set(AlarmManager.RTC_WAKEUP, d, intent);
                    } catch (ParseException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }

                }

            }else{
                Log.d("List : ", "Not having any list");
            }

        }

前もって感謝します。私の質問を理解していただければ幸いです。

4

1 に答える 1

0

Androidドキュメントに記載されているとおり。

同じ IntentSender に対してスケジュールされたアラームが既にある場合は、最初にキャンセルされます。

タイミングを1つずつ設定する必要があると思います.T1でアラームが呼び出され、T2に設定されたときを意味します。T2 が終了したら、T3 を設定します...

于 2013-09-13T15:24:28.783 に答える