即使没有互联网连接,我也试图在Android中制作日程安排通知。我试过SystemClock而不是Calendar,但是没有。 我的代码是:
AlarmManager alarmManager;
Intent alarmIntent;
PendingIntent pendingIntent;
Calendar alarmStartTime = Calendar.getInstance();
alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmIntent = new Intent(Splash.this, AlarmReceiver.class);
pendingIntent = PendingIntent.getBroadcast(Splash.this, 0, alarmIntent, 0);
alarmStartTime.set(Calendar.HOUR_OF_DAY, 11);
alarmStartTime.set(Calendar.MINUTE, 32);
alarmStartTime.set(Calendar.SECOND, 0);
alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, alarmStartTime.getTimeInMillis(), 30 * 1000, pendingIntent);
这不起作用。但以下一行工作正常。它每30秒触发一次。
alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime(), 30 * 1000, pendingIntent);
我希望我的应用每隔8:00触发一次。我怎么能这样做。
答案 0 :(得分:0)
注意:从API 19(KITKAT)开始,警报传递是不准确的:操作系统 将移动警报以最小化唤醒和电池使用。那里 是支持需要严格交付的应用程序的新API 担保;请参阅setWindow(int,long,long,PendingIntent)和 setExact(int,long,PendingIntent)。应用程序 targetSdkVersion早于API 19将继续看到 以前的行为,其中所有警报都在何时传递 请求。
https://developer.android.com/reference/android/app/AlarmManager.html
答案 1 :(得分:0)
我解决了这个问题。在日历中设置第二个时,我们必须使用两位数字。我使用以下代码解决了这个问题。
alarmStartTime.set(Calendar.HOUR_OF_DAY, 08);
alarmStartTime.set(Calendar.MINUTE, 00);
alarmStartTime.set(Calendar.SECOND, 00);
并且在调用时使用了像:
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, alarmStartTime.getTimeInMillis(), getInterval(), pendingIntent);
并设置一天的间隔方法,以便它始终在上午8点醒来。
private int getInterval(){
int days = 1;
int hours = 24;
int minutes = 60;
int seconds = 60;
int milliseconds = 1000;
int repeatMS = days * hours * minutes * seconds * milliseconds;
return repeatMS;
}