I scheduled alarm using Calendar class as below
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY,1);
cal.getTimeInMillis();
cal.set(Calendar.MINUTE,05);
long TriggerMillis = cal.getTimeInMillis();
AlarmManager aManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
aManager.set(AlarmManager.RTC_WAKEUP, TriggerMillis,pIntent);
where pIntent is an pending intent to proceed further when alarm triggers.
The event triggers with few seconds delay. Is that any problem using Calendar class for this task. Any suggestions?
TIA..
android.app.AlarmManager. This class provides access to the system alarm services. These allow you to schedule your application to be run at some point in the future.
You have two issues:
It is not reliable to use a _WAKEUP
alarm with a service directly. The only reliable patterns involve WakefulBroadcastReceiver
, my WakefulIntentService
, or something along those lines, where the PendingIntent
will be to a BroadcastReceiver
.
If your android:targetSdkVersion
is 19 or higher, and you are running on an API Level 19+ device, set()
is inexact. Ideally, you allow it to be inexact, or perhaps use setWindow()
to control how off it will be, to minimize the power hit of your alarm event. If it absolutely has to occur at a precise moment, you will need to use setExact()
. Since setWindow()
and setExact()
are new to API Level 19, you will need to fall back to set()
on older devices, by examining Build.VERSION.SDK_INT
and branching accordingly.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With