У меня возникают проблемы при установке повторяющегося будильника, который срабатывает в определенную дату (введенную пользователем) каждый месяц или каждые два месяца. Пока что я использую службу уведомления BroadcastReceiver вместе с ожидающим намерением. Я не могу понять:
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY * 30*month, pendingIntent);
Как мы можем установить функцию здесь и как это повлияет на время автономной работы и есть ли какие-либо другие вещи (например, сохранение даты в базе данных и вызов ее только при срабатывании чего-либо?) И т. Д. 1. Служба уведомлений Расширение службы
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
// Getting Notification Service
mManager = (NotificationManager) this.getApplicationContext()
.getSystemService(
this.getApplicationContext().NOTIFICATION_SERVICE);
/*
* When the user taps the notification we have to show the Home Screen
* of our App, this job can be done with the help of the following
* Intent.
*/
Intent intent1 = new Intent(this.getApplicationContext(), com.expandablelistItems.demo.adapter.DynamicActivity.class);
Notification notification = new Notification(R.drawable.ic_launcher,
"Payment of your demoReminder", System.currentTimeMillis());
intent1.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP
| Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingNotificationIntent = PendingIntent.getActivity(
this.getApplicationContext(), 0, intent1,
PendingIntent.FLAG_UPDATE_CURRENT);
notification.flags |= Notification.FLAG_AUTO_CANCEL;
notification.setLatestEventInfo(this.getApplicationContext(),
"demo", "Payment of your demoReminder",
pendingNotificationIntent);
mManager.notify(0, notification);
}
2. Способ повторения
if (current_Month == Calendar.FEBRUARY){//for feburary month)
GregorianCalendar cal = (GregorianCalendar) GregorianCalendar.getInstance();
if(cal.isLeapYear(calendar.get(Calendar.YEAR))){//for leap year feburary month
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY * 29*month, pendingIntent);
Toast.makeText(getActivity(), "februry", Toast.LENGTH_SHORT).show();}
else{ //for non leap year feburary month
Toast.makeText(getActivity(), "feb", Toast.LENGTH_SHORT).show();
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY * 28*month, pendingIntent);
}
}
а это широковещательный приемник
@Override
public void onReceive(Context context, Intent intent) {
// When our Alaram time is triggered , this method will be excuted (onReceive)
// We're invoking a service in this method which shows Notification to the User
Intent myIntent = new Intent(context, NotificationService.class);
context.startService(myIntent);
}
Где notificationService - это первая служба расширения кода