Проверить работает ли сервис

Ответить
Аватара пользователя
neoksi
Сообщения: 712
Зарегистрирован: 26 июл 2012, 10:42
Контактная информация:

Проверить работает ли сервис

Сообщение neoksi » 26 авг 2012, 12:55

Выцепил на просторах интернета хороший пример проверки работает ли сервис и чуть модернизировал его, для своего метода onCreate, чтоб в холостую не запускался сервис при поворотах экрана.

Код: Выделить всё

// Стартуем сервис, если он ещё не запущен ;)
        boolean tStartService = true;
        ActivityManager am = (ActivityManager)this.getSystemService(ACTIVITY_SERVICE);
        List<ActivityManager.RunningServiceInfo> rs = am.getRunningServices(50);
        for (int i=0; i<rs.size(); i++) { 
        	ActivityManager.RunningServiceInfo rsi = rs.get(i);
        	if(myService.class.getName().equalsIgnoreCase(rsi.service.getClassName())){
        		tStartService = false;
        	}        	
        }         
        if(tStartService){
        	startService(new Intent(ctx, myService.class));
        }

Аватара пользователя
andev
Сообщения: 219
Зарегистрирован: 13 янв 2012, 17:56

Re: Проверить работает ли сервис

Сообщение andev » 26 авг 2012, 13:31

Полагаю, не лишним будет прерывать цикл после обнаружения своего сервиса в списке выполняемых, что бы не проверять остальные.

Код: Выделить всё

if(myService.class.getName().equalsIgnoreCase(rsi.service.getClassName())){
        tStartService = false;
        break;
}

Аватара пользователя
neoksi
Сообщения: 712
Зарегистрирован: 26 июл 2012, 10:42
Контактная информация:

Re: Проверить работает ли сервис

Сообщение neoksi » 26 авг 2012, 21:31

andev писал(а):Полагаю, не лишним будет прерывать цикл после обнаружения своего сервиса в списке выполняемых, что бы не проверять остальные.

Код: Выделить всё

if(myService.class.getName().equalsIgnoreCase(rsi.service.getClassName())){
        tStartService = false;
        break;
}
Спасибо за дополнение, я как-то не подумал про это :)

math64
Сообщения: 235
Зарегистрирован: 16 июл 2012, 07:47

Re: Проверить работает ли сервис

Сообщение math64 » 27 авг 2012, 07:20

Если уж говорить об оптимизации, то можно myService.class.getName() вытащить за пределы цикла.
А поиск сервиса выделить в отдельную функцию.

brucemax
Сообщения: 117
Зарегистрирован: 01 апр 2012, 16:09
Откуда: Минск
Контактная информация:

Re: Проверить работает ли сервис

Сообщение brucemax » 14 ноя 2012, 12:42

Спасибо большое! То что надо!
P.S. Я так понял больше 50 запущенных сервисов на практике вряд ли встретишь.. :)

Аватара пользователя
neoksi
Сообщения: 712
Зарегистрирован: 26 июл 2012, 10:42
Контактная информация:

Re: Проверить работает ли сервис

Сообщение neoksi » 14 ноя 2012, 13:03

brucemax писал(а):Я так понял больше 50 запущенных сервисов на практике вряд ли встретишь.. :)
Сейчас на практике да, но думаю в дальнейшем придется это количество увеличивать. Ну это можно сделать когда пользователи начнут жаловаться.

Jack_killer
Сообщения: 21
Зарегистрирован: 30 янв 2012, 21:15

Re: Проверить работает ли сервис

Сообщение Jack_killer » 13 июн 2016, 21:41

прошло 4-е года.
Nexus5 - 2-3 дня без перезагрузки 96 сервисов -)

Ответить