Я хочу проверять некоторые данные по общим предпочтениям каждый день в 3 часа. У меня три разных класса;
1-й: Класс, содержащий мое основное задание (для проверки sharedpref.).
2nd: BroadReceiver, который переустанавливает мой будильник при перезагрузке устройства
3-е: Мой основной класс занятий
Есть две проблемы;
Если я активирую будильник с помощью метода onCreate моей основной операции, мой будильник работает правильно, пока я не перезапущу приложение. всякий раз, когда я перезапускаю приложение, мой будильник срабатывает немедленно (он не ждет времени будильника).
Во-вторых, давайте предположим, что пользователь перезапустил телефон, и мой широковещательный приемник запустился после перезагрузки и снова установил будильник. Что будет, если пользователь запустит приложение? (Потому что будильник уже был установлен)
Вот мои коды;
- Моя основная задача ():
Log.e("Main Task:","Do someting");
- Приемник вещания
if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 3);
calendar.set(Calendar.MINUTE, 0);
long delay = 24*60*60*1000;
AlarmManager alarmMgr =(AlarmManager) context.getSystemService (Context.ALARM_SERVICE);
Intent alarmIntent = new Intent(context, myMainTask.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context,145,alarmIntent,PendingIntent.FLAG_UPDATE_CURRENT);
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), delay, pendingIntent);
Toast.makeText(context,"Ahanda Kuruldum",Toast.LENGTH_LONG).show();
Log.e("ZB-DeviceBootReceiver:","just now alarm_up");
}
- Метод вызова тревоги из onCreate (Main Activity)
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 3);
calendar.set(Calendar.MINUTE, 0);
long delay = 24*60*60*1000;
alarmMgr =(AlarmManager) getApplicationContext().getSystemService (Context.ALARM_SERVICE);
Intent intent = new Intent(getApplicationContext(), myMainTask.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast (getApplicationContext(),1453, intent,PendingIntent.FLAG_UPDATE_CURRENT);
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), delay, pendingIntent);
Заранее спасибо.