У меня проблема с функциями Alarmmanager для Android.
Проблема заключается в том, что аварийные сигналы, для которых требуется более часа ожидания, не срабатывают.
Мое приложение изначально создает аварийный сигнал, например: -
PendingIntent sender = PendingIntent.getBroadcast(this, 192837, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, mCal.getTimeInMillis(), sender);
Когдасигнал тревоги гаснет, и запускается мой класс RecieverHandler, а именно эта функция: -
public void onReceive(Context context, Intent intent)
{
try {
Bundle bundle = intent.getExtras();
Intent newIntent = new Intent(context, MessageDispatcher.class);
newIntent.putExtras(bundle);
// newIntent.addFlags(Intent.FLAG);
context.startService(newIntent);
} catch (Exception e) {
Toast.makeText(context, "There was an error somewhere, but we still received an alarm", Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
}
Затем запускается служба с именем MessageDispatcher и вызывается эта функция: -
public int onStartCommand(Intent intent, int flags, int startId)
Эта функция получает следующий сигнал тревоги из моей базы данных, это, я уверен, работает правильно, затем она устанавливает новый сигнал тревоги на основе даты из базы данных следующим образом: -
PendingIntent sender = PendingIntent.getBroadcast(this, 192837, newIntent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, mCal.getSendAt().getTimeInMillis(), sender);
Это создает сигнал тревоги дляследующее сообщение.
Я проверил это в течение короткого промежутка времени, и оно, кажется, работает и проверил это в течение большого количества времени, изменяя мои дату и время в телефоне.Похоже, что он срабатывает успешно.
Затем, когда этот сигнал тревоги сработает, он получит следующий сигнал тревоги и запланирует его.Я почти на 100% уверен, что эти части работают нормально.
Так что я застрял только с некоторыми теориями, почему он не работает.
Я подумал, что это может быть связано с отключением телефона от телефона.в этом случае отладчик, но сигнал тревоги, кажется, работает в течение короткого промежутка времени.
Итак, моя основная теория заключается в том, что созданный мной менеджер сигналов тревоги удаляется через определенное время?Если это правда, то это большая проблема, поскольку мне нужно, чтобы это работало независимо от того, сколько времени прошло.
Любая помощь в обеспечении того, чтобы моя тревога оставалась, очень ценится, спасибо.