2013-08-11 2 views
0

Я написал небольшое приложение (услугу) для Android, и он выполняется большую часть времени, он правильно перезапускается после загрузки телефона, однако время от времени (телефон включен в это время) он уходит или убивается.Что может убить сервис?

Поскольку это пассивное обслуживание (он ждет событий включения/выключения экрана) Интересно, что в системе Android может убить процесс таким образом, что процесс, отмеченный для повторной загрузки при загрузке, не активируется снова.

Или, другими словами, как обнаружить/предотвратить такой случай, когда служба, предназначенная для запуска все время, будет убита и не активирована снова?

Только для записи у меня есть возможность удалить службу ;-).


Update: мой вопрос вообще один, но у меня есть этот сервис в виду: https://github.com/macias/MissingSettings

Что касается onStart против onCommand вопрос:

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    super.onStartCommand(intent,flags,startId); 
    // If we get killed, after returning from here, restart 
    return START_STICKY; 
} 
+0

Используете ли вы метод 'onStart()' вместо 'onStartCommand()'] в своей службе? –

+0

Услуги объясняются подробно здесь http://developer.android.com/guide/components/services.html – Squonk

+0

@ExceptionInNameInitializer, 'onStartCommand' для установки сервиса является липким. Плюс 'onCreate'. – greenoldman

ответ

1

В принципе ничто не мешает быть убитым в любое время. Хорошим примером является низкая память. В вашем случае я считаю, что Android-система считает, что нет интерфейса, поэтому услуга не требуется. Имеет смысл освободить ресурсы для приложений, находящихся на переднем плане.

Если вам действительно нужна ваша услуга, а затем она должна вызвать пользователя, использующего startForeground с уведомлением.

Также вы можете попробовать реле on onStartCommand вернуть результат, это может помочь вам получить намерение вернуться из системы.

p.s. нам было бы намного легче дать советы о том, как проектировать сервис, только если вы поделитесь своими требованиями.

+0

Спасибо. Что касается предотвращения убийства, то служба должна следовать ограничениям Android, но я хотел бы повторно запустить ее как можно скорее (кстати, я не использую много приложений, поэтому убить на низкой памяти маловероятно, служба работала до ночи, я не делал ничего не делать, утром он был мертв). За исключением моего обслуживания, я запускаю 2 аккумулятора, вот и все. Требования довольно просты - позволяют пользователю удалять или останавливать службу (явно через пользовательский интерфейс), кроме того - запускать при загрузке и постоянно останавливать все события мониторинга экрана (вкл./Выкл.). – greenoldman

Смежные вопросы