Android编程使用alarmmanger

时间:2015-09-07 12:11:54

标签: android alarmmanager

我想使用AlarmManger在特定时间显示吐司,但我的吐司在给定时间没有显示?帮我。 我的代码如下:

private void startAlarm() {
    Calendar cal=Calendar.getInstance();
    cal.set(Calendar.DAY_OF_MONTH,9);
    cal.set(Calendar.MONTH,7);
    cal.set(Calendar.YEAR,2015);
    cal.set(Calendar.HOUR_OF_DAY,2);
    cal.set(Calendar.MINUTE,55);
    cal.set(Calendar.AM_PM,Calendar.PM);
    Intent intent = new Intent(this, WelcomActivity.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), 0, intent, 0);

    AlarmManager alarmManager = (AlarmManager)getApplicationContext().getSystemService(ALARM_SERVICE);

    alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),
            AlarmManager.INTERVAL_DAY, pendingIntent);
    Toast.makeText(this, "Alarm worked.", Toast.LENGTH_LONG).show();

}

1 个答案:

答案 0 :(得分:0)

setInexactRepeating州的documentation

  

您的闹钟的第一次触发不会在请求的时间之前,但在此之后几乎整整一段时间内可能不会发生。

[感谢ci _]

  

注意:从API 19开始,所有重复警报都不准确。如果你的   应用程序需要精确的交付时间,然后必须使用一次性   确切的警报,每次重新安排,如上所述。遗产   targetSdkVersion早于API 19的应用程序将   继续发出所有警报,包括重复警报,   确切地对待。

因此,您需要按照documentation中的说明使用一次性确切警报并重新安排。