Android 如何保持我的应用程序跟踪时间,在特定时间执行特定操作

Android 如何保持我的应用程序跟踪时间,在特定时间执行特定操作,android,Android,穆斯林祈祷时间为每天5次,因此我希望我的应用程序始终检查时间,当当前时间与5次中的时间匹配时,应用程序会触发一个操作,如播放媒体文件,或向用户发送通知使用AlarmManager AlarmManager mAlarmManger = (AlarmManager)getSystemService(Context.ALARM_SERVICE); //Create pending intent & register it to your alarm notifier class In

穆斯林祈祷时间为每天5次,因此我希望我的应用程序始终检查时间,当当前时间与5次中的时间匹配时,应用程序会触发一个操作,如播放媒体文件,或向用户发送通知使用AlarmManager

 AlarmManager mAlarmManger = (AlarmManager)getSystemService(Context.ALARM_SERVICE);

 //Create pending intent & register it to your alarm notifier class
 Intent intent = new Intent(this, AlarmReceiver_maandag_1e.class);
 intent.putExtra("uur", "1e"); // if you want
 PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);

 //set timer you want alarm to work (here I have set it to 9.00)
 Calendar calendar = Calendar.getInstance();
 calendar.set(Calendar.HOUR_OF_DAY, 9);
 calendar.set(Calendar.MINUTE, 0);
 calendar.set(Calendar.SECOND, 0);

//set that timer as a RTC Wakeup to alarm manager object
mAlarmManger.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
感谢zipo13的更正。正如谷歌开发者所说

注意:从API 19(Build.VERSION_CODES.KITKAT)开始,警报传递是不准确的:操作系统将切换警报,以尽量减少唤醒和电池使用。有新的API支持需要严格交付保证的应用程序;请参见设置窗口(int,long,long,pendingent)和设置精确窗口(int,long,pendingent)。targetSdkVersion早于API 19的应用程序将继续看到之前的行为,其中所有警报都会在请求时准确传递


不要使用MalarManger.set,如果手机处于休眠状态,则闹钟可能不会弹出。请改用mAlarmManger.setExact