リマインダーが正しい時刻にトリガーされず、デバイスを再起動したときにのみトリガーされます。リマインダーが正しい時刻にトリガーされない
リマインダを作成した日、私は正しい日にそれを取得していましたが、それ以降はデバイスを再起動したときにのみ起動します(正しい時間ではありません)。
を毎月トリガするために、毎日の毎週をトリガするために、3日ごとに第四トリガする第三、すべての2日にトリガする2番目と5番目のトリガするために1しかし、私たび -
などが、私は5つのアラームを作成しました私のデバイスを再起動します(私のデバイスを再起動した場合:05:00、それらはすべて同時にトリガーします)。アイドロップが12:15にトリガーすることを期待していましたが、Cyripが13: 2日おきに20回など。
AlarmReceiver.java:あなた(再)日付がであるまでは、リピート間隔を追加することで、日付を調整する必要があります(ブート受信機で例えば)アラームを作成
public void setRepeatAlarm(Context context, Calendar calendar, int ID, long RepeatTime) {
mAlarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
// Put Reminder ID in Intent Extra
Intent intent = new Intent(context, AlarmReceiver.class);
intent.putExtra(ReminderEditActivity.EXTRA_REMINDER_ID, Integer.toString(ID));
mPendingIntent = PendingIntent.getBroadcast(context, ID, intent, PendingIntent.FLAG_CANCEL_CURRENT);
// Calculate notification timein
Calendar c = Calendar.getInstance();
long currentTime = c.getTimeInMillis();
long diffTime = calendar.getTimeInMillis() - currentTime;
// Start alarm using initial notification time and repeat interval time
mAlarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME,
SystemClock.elapsedRealtime() + diffTime,
RepeatTime , mPendingIntent);
// Restart alarm if device is rebooted
ComponentName receiver = new ComponentName(context, BootReceiver.class);
PackageManager pm = context.getPackageManager();
pm.setComponentEnabledSetting(receiver,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
}
がmPendingIntent = PendingIntent.getBroadcast(文脈、ID、意図、PendingIntent.FLAG_CANCEL_CURRENT)から、あなたのIDを確認してください。あなたは他のアラームを上書きし、1だけを設定するかもしれません。古いアラームを設定した場合、他のアラームを妨げるべきではありませんが、あなたが設定したIDは – Tazz