AlarmManagerを使用して通知用のアラームを設定しようとしています。ユーザーがリストアイテムを選択するとアラームが設定されるので、毎回別のアラームを設定しようとしています(一意のIDがpendingIntentに渡される)。リストアイテムが選択されます。setExactメソッドの呼び出しをスキップしました。アラームが期待どおりに起動しない
アラームを設定するために使用されるコード:
public static void setAlarm(Context context, Movie movie, Schedule schedule){
Intent arg = new Intent(context, NotifyService.class);
arg.putExtra(NotificationHelper.fetch_schedule_id, schedule.getId());
arg.putExtra(NotificationHelper.fetch_movie_id, movie.getId());
PendingIntent pendingIntent = PendingIntent.getService(context.getApplicationContext(), (int) schedule.getId(), arg, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
am.setExact(AlarmManager.RTC_WAKEUP, schedule.getStart().getTime(), pendingIntent);
else
am.set(AlarmManager.RTC_WAKEUP, schedule.getStart().getTime(), pendingIntent);
}
私が扱ってる問題呼び出しが設定(またはsetExact)するということである方法を常時実行されていません。それは時間の半分で動作しますが、ユーザーが2つ以上のリスト項目をタップすると、1秒未満で次々と1つのタップ項目がタップされ、最初の呼び出しだけが実行され、残りの呼び出しは無視されます。
また、set/setexactメソッドはvoidを返しますので、メソッドが呼び出され、アラームが設定されていればデバッグできません。今のところ私はadbシェルのdumpsysアラーム毎回確認する必要があります。
誰かが毎回アラームが発生するようにアラームをスケジュールする方法を教えても、方法が頻繁に呼び出されたり、正しい方向に案内されたりしても、大きな助けになります。 :)
実際、この問題はデバイス固有ではありません。私は多くのデバイスでこのアプリをテストしたが、まだこのバグに直面している。そして、私が説明したユースケースについては、アラームはまったく起動しません。 –
ok、あなたは別のバグを持っているかもしれませんが、あなたが私が説明したバグに直面するでしょう。また、より多くのコードを添付することができます。 – Vasilisfoo