Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.88
Лонгран
0 / 0 / 0
Регистрация: 19.11.2014
Сообщений: 14
#1

Узнать запущен ли сервис - Программирование Android

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

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

Узнать, запущен ли слушатель - Программирование Android
Можно ли определить, запущен ли слушатель? Т.е. было ли выполнено addListener...()

Как отменить выполнение кода в сервисе, который запущен в отдельном потоке? - Программирование Android
Здравствуйте! Есть код класса, наследующего Service public int onStartCommand(Intent intent, int flags, int startId) { tTask = new...

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

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

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

Не получается узнать запущен ли скринсейвер - Delphi
сую в тело таймера этот код SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0, @status, 0); if status then Label1.Caption :=...

11
YuraAAA
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 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
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
28.11.2014, 16:27 #4
Лонгран, нет
0
Лонгран
0 / 0 / 0
Регистрация: 19.11.2014
Сообщений: 14
28.11.2014, 16:29  [ТС] #5
Ок, спасибо.
0
Gabberr
102 / 102 / 17
Регистрация: 13.10.2009
Сообщений: 403
28.11.2014, 16:39 #6
YuraAAA, По-моему вы путаете, single instance это да, метод onCreate вызовется один раз при создании, а вот метод onStartCommand вызывается каждый раз при старте сервиса.
0
YuraAAA
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
28.11.2014, 18:13 #7
Gabberr, ну и что?
0
Gabberr
102 / 102 / 17
Регистрация: 13.10.2009
Сообщений: 403
28.11.2014, 18:36 #8
Допустим, но разве onStartCommand не будет повторно запускаться при повторном запуске сервиса?
Лонгран, нет
Будет вызываться повторно.
0
Лонгран
0 / 0 / 0
Регистрация: 19.11.2014
Сообщений: 14
02.12.2014, 14:39  [ТС] #9
А как узнать, что сервис уже запущен и больше его не запускать?
0
Gabberr
102 / 102 / 17
Регистрация: 13.10.2009
Сообщений: 403
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
102 / 102 / 17
Регистрация: 13.10.2009
Сообщений: 403
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
Привет! Вот еще темы с ответами:

Как узнать, запущен ли процесс? - C#
Добрый день. Как узнать запущен ли процесс? using System.Diagnostics; ... protected Process procs; ... p = &quot;Search...&quot; ...

Как узнать запущен ли поток threads? - C#
Здраствуйте уважаемые знатоки. Как известно, чтобы завершить поток достаточно вызвать threads.Abort(); где id - идентификатор потока. ...

Узнать запущен ли процесс и выполнить действие - C++ Builder
Узнать запущен ли процесс и выполнить действие Имя кнопки:cleaner Кнопка должна менять название в зависимости запущено ли приложение...

Узнать что процесс запущен системой - C#
С помощью System.Diagnostics.Process я могу получить список процессов. А как узнать, какие из процессов запущены системой (системные), а...


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

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

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