Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/23: Рейтинг темы: голосов - 23, средняя оценка - 4.57
Лонгран
0 / 0 / 0
Регистрация: 19.11.2014
Сообщений: 14
#1

Узнать запущен ли сервис

28.11.2014, 16:00. Просмотров 4265. Ответов 11
Метки нет (Все метки)

Я хочу из приложения запускать сервис. Но чтобы не запускать его дважды мне как то надо узнать запущен ли он уже или нет. Подскажите как это можно сделать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2014, 16:00
Ответы с готовыми решениями:

Узнать, запущен ли слушатель
Можно ли определить, запущен ли слушатель? Т.е. было ли выполнено...

Как отменить выполнение кода в сервисе, который запущен в отдельном потоке?
Здравствуйте! Есть код класса, наследующего Service public int...

Как сделать так, чтобы AVD увидел файлы ОС linux, на которой девайс был запущен?
Здравствуйте! Помогите, пожалуйста, разобраться со следующим вопросом. На...

сервис printer spool не запущен
а с принтерами не в курсе что можно сделать ? проблема - пишет что сервис...

Как узнать, запущен ли процесс?
Добрый день. Как узнать запущен ли процесс? using System.Diagnostics; ......

11
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
28.11.2014, 16:06 #2
Лонгран, сервис всегда single instance, не беспокойтесь, он не запустится второй раз
0
Лонгран
0 / 0 / 0
Регистрация: 19.11.2014
Сообщений: 14
28.11.2014, 16:26  [ТС] #3
Допустим, но разве onStartCommand не будет повторно запускаться при повторном запуске сервиса?
0
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
28.11.2014, 16:27 #4
Лонгран, нет
0
Лонгран
0 / 0 / 0
Регистрация: 19.11.2014
Сообщений: 14
28.11.2014, 16:29  [ТС] #5
Ок, спасибо.
0
Gabberr
103 / 103 / 19
Регистрация: 13.10.2009
Сообщений: 404
28.11.2014, 16:39 #6
YuraAAA, По-моему вы путаете, single instance это да, метод onCreate вызовется один раз при создании, а вот метод onStartCommand вызывается каждый раз при старте сервиса.
0
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
28.11.2014, 18:13 #7
Gabberr, ну и что?
0
Gabberr
103 / 103 / 19
Регистрация: 13.10.2009
Сообщений: 404
28.11.2014, 18:36 #8
Допустим, но разве onStartCommand не будет повторно запускаться при повторном запуске сервиса?
Лонгран, нет
Будет вызываться повторно.
0
Лонгран
0 / 0 / 0
Регистрация: 19.11.2014
Сообщений: 14
02.12.2014, 14:39  [ТС] #9
А как узнать, что сервис уже запущен и больше его не запускать?
0
Gabberr
103 / 103 / 19
Регистрация: 13.10.2009
Сообщений: 404
02.12.2014, 17:45 #10
Проверить можно так:
Java
1
2
3
4
5
6
7
8
9
private boolean isMyServiceRunning(Class<?> serviceClass) {
    ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
    for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
        if (serviceClass.getName().equals(service.service.getClassName())) {
            return true;
        }
    }
    return false;
}
Java
1
isMyServiceRunning(MyService.class)
Но вобще говоря лучше не проверять запущен ли сервис, а корректно обрабатывать повторный вызов в onStartCommand
1
Лонгран
0 / 0 / 0
Регистрация: 19.11.2014
Сообщений: 14
06.12.2014, 10:08  [ТС] #11
Большое спасибо. Но это значит что мне надо выбрать имя класса сервера позаковырестей, так?

Добавлено через 20 часов 26 минут
Не сервера, а сервиса.
0
Gabberr
103 / 103 / 19
Регистрация: 13.10.2009
Сообщений: 404
06.12.2014, 13:25 #12
Да любое адекватное имя можно) сравнение происходит по полному имени, учитывая имя пакета.
0
06.12.2014, 13:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2014, 13:25

Не получается узнать запущен ли скринсейвер
сую в тело таймера этот код SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0,...

Как узнать запущен ли процесс?
Надо узнать запущен ли процесс и предпрянять какие либо действия.

Как узнать запущен ли поток threads?
Здраствуйте уважаемые знатоки. Как известно, чтобы завершить поток достаточно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru