Где мне вызвать диспетчер тревог? - PullRequest
0 голосов
/ 26 апреля 2019

Я хочу проверять некоторые данные по общим предпочтениям каждый день в 3 часа. У меня три разных класса;

1-й: Класс, содержащий мое основное задание (для проверки sharedpref.).

2nd: BroadReceiver, который переустанавливает мой будильник при перезагрузке устройства

3-е: Мой основной класс занятий

Есть две проблемы;

Если я активирую будильник с помощью метода onCreate моей основной операции, мой будильник работает правильно, пока я не перезапущу приложение. всякий раз, когда я перезапускаю приложение, мой будильник срабатывает немедленно (он не ждет времени будильника).

Во-вторых, давайте предположим, что пользователь перезапустил телефон, и мой широковещательный приемник запустился после перезагрузки и снова установил будильник. Что будет, если пользователь запустит приложение? (Потому что будильник уже был установлен)

Вот мои коды;

  1. Моя основная задача ():
Log.e("Main Task:","Do someting");
  1. Приемник вещания
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");

}
  1. Метод вызова тревоги из 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);

Заранее спасибо.

...