Страница 1 из 1

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

Добавлено: 26 авг 2012, 12:55
neoksi
Выцепил на просторах интернета хороший пример проверки работает ли сервис и чуть модернизировал его, для своего метода 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));
        }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Добавлено: 13 июн 2016, 21:41
Jack_killer
прошло 4-е года.
Nexus5 - 2-3 дня без перезагрузки 96 сервисов -)