Android: убивается ли диспетчер аварийных сигналов, если приложение убивается системой

#android #alarmmanager #low-memory

#Android #alarmmanager #нехватка памяти

Вопрос:

Мой приемник загрузится, когда устройство загрузится, и запустит диспетчер аварийных сигналов, чтобы планировать каждые 10 секунд, чтобы проверить, что моя другая служба все еще работает. Теперь мне интересно, будет ли приемник сигнала тревоги убит или перестанет получать широковещательную передачу, если памяти мало. Потому что мне нужно постоянно проверять, по-прежнему ли доступны другие мои сервисы, и не быть убитым системой. Если я уничтожил службу или не перезапустил ее снова, приемник сигналов тревоги может запустить службу автоматически).

Комментарии:

1. Если ваша служба вернется START_STICKY , она всегда будет работать в фоновом режиме, и если система остановила ваше приложение по соображениям памяти, служба будет запущена снова, когда освободится память.

Ответ №1:

Широковещательный приемник (в частности, приемник сигналов тревоги) может быть уничтожен системой в случаях «экстремального давления памяти». То есть: этого не произойдет в обычных ситуациях, но это может произойти.

Жизненный цикл процесса

Процесс, который в данный момент выполняет BroadcastReceiver (то есть в настоящее время выполняет код в своем методе onReceive (Context, Intent)), считается процессом переднего плана и будет выполняться системой, за исключением случаев крайней нехватки памяти.

Из документации Android.

Комментарии:

1. Есть ли хороший способ предотвратить это, потому что мне нужно прослушивать UDP-пакеты, чтобы постоянно проверять другие элементы управления устройством, например. пользователь касается текстового поля редактирования, это отправит пакет данных на мое устройство, чтобы мое устройство могло реагировать и отображать клавиатуру. если AlarmReceiver будет уничтожен, я не потрудился написать этот AlarmReceiver.

2. Нет способа предотвратить это. Android решит, когда приемник аварийных сигналов может быть уничтожен. Это не будет происходить регулярно, поэтому, возможно, кодирование приемника сигналов тревоги по-прежнему стоит усилий.

3. Извините, что не понимаю последнюю фразу, потому что английский не был моим родным языком «стоит боли», значит ли это, что все еще стоит его иметь???

4. Да, я думаю, это стоит иметь. Служба может быть уничтожена по ряду причин, отличных от нехватки памяти. Если вы считаете, что предоставленный мной ответ был правильным, пожалуйста, отметьте его как полезный.