0

setRepeating() を使用したアラームの設定に問題があります。

Intent i = new Intent(context, OnAlarmReceiver.class);
i.putExtra("id", storable.getId());
PendingIntent pi = PendingIntent.getBroadcast(context, storable.getId(), i, PendingIntent.FLAG_UPDATE_CURRENT);

mgr.setRepeating(AlarmManager.RTC_WAKEUP, storable.getObject().getTimeOnDay(Calendar.FRIDAY), Event.MILLISECONDS_IN_A_DAY*7, pi);
Calendar c = Calendar.getInstance();
c.setTimeInMillis(storable.getObject().getTimeOnDay(Calendar.FRIDAY));
Log.v("ACTUALLY SCHEDULED ON FRIDAY", c.getTime().toString());

Logcat の状態: 09-28 02:17:58.535: V/実際に金曜日にスケジュールされている (32494): Fri Oct 05 01:43:00 EDT 2012

これは私がスケジュールした正しい時間です。しかし、私のアラームはトリガーされません。これの原因について私が持っている唯一の手がかりは、デバッガーを使用してメソッドにステップインすると、呼び出されるメソッドの 1 つが Parcel.readException() であるということです。これが何を意味するのか、実際に重要なのかさえわかりません。何が起こっているのか、誰にも手がかりがありますか?

4

2 に答える 2

0

このリンクを参照してください。それはトムからも尋ねられ、CommonsWareはそれにかなり良い答えを与えました。

編集:

これが役立つかどうかを確認します。

    Intent myIntent = new Intent(context, OnAlarmReceiver.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, myIntent, 0);
    AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(System.currentTimeMillis());
    calendar.add(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 1000 * 60, pendingIntent);
于 2012-09-28T06:50:27.490 に答える
0

私は答えを見つけました。このメソッドは複数回呼び出され、storable.getId() からの同じ値を PendingIntent で使用していました。古い PendingIntent を上書きし、私が待っていなかった別のものをスケジュールしていました。お世話になった方々、ありがとうございました。

于 2012-09-28T08:08:49.860 に答える