-1
我有一个报警在我的应用程序:为什么我的Android AlarmManager代码无法正常工作?
public class MainActivity extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState){
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.curentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 11);
calendar.set(MINUTE, 11);
Intent intent = new Intent(this, AlarmReceiver.class);
PendingIntent pendingIntent = Pending.getBroadcast(this, 0, intent, 0);
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
alarmManager.setInexactRepeating(AlarmManager.RTC, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntente);
}
}
这是我AlarmReceiver.class
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent){
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
System.out.println("ALARM: " + sdf.format(new Date()));
}
}
在我的AndroidManifest.xml我这行
<receiver android:name=".main.AlarmReceiver" />
的问题是在我设定的时间内,闹钟不会报警。我设置了报警
calendar.set(Calendar.HOUR_OF_DAY, 11);
calendar.set(MINUTE, 5);
然后报警在11:11:29
报警。然后我设置了报警
calendar.set(Calendar.HOUR_OF_DAY, 11);
calendar.set(MINUTE, 20);
然后报警在11:26:29
报警。然后我设置了报警
calendar.set(Calendar.HOUR_OF_DAY, 11);
calendar.set(MINUTE, 29);
然后报警在11:41:29
报警。
整个上午这样继续。不过,如果我替换该行
alarmManager.setInexactRepeating(AlarmManager.RTC, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntente);
这一行
alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, (SystemClock.elapsedRealtime()+10000), pendingIntent);
然后报警的报警完全在适当的10秒。
这是怎么回事?
我错过了阅读文档;谢谢你指出。 – Brian