Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.88
Лонгран
0 / 0 / 0
Регистрация: 19.11.2014
Сообщений: 14
28.11.2014, 16:00     Узнать запущен ли сервис #1
Я хочу из приложения запускать сервис. Но чтобы не запускать его дважды мне как то надо узнать запущен ли он уже или нет. Подскажите как это можно сделать?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
 Аватар для YuraAAA
1563 / 1305 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
28.11.2014, 16:06     Узнать запущен ли сервис #2
Лонгран, сервис всегда single instance, не беспокойтесь, он не запустится второй раз
Лонгран
0 / 0 / 0
Регистрация: 19.11.2014
Сообщений: 14
28.11.2014, 16:26  [ТС]     Узнать запущен ли сервис #3
Допустим, но разве onStartCommand не будет повторно запускаться при повторном запуске сервиса?
YuraAAA
 Аватар для YuraAAA
1563 / 1305 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
28.11.2014, 16:27     Узнать запущен ли сервис #4
Лонгран, нет
Лонгран
0 / 0 / 0
Регистрация: 19.11.2014
Сообщений: 14
28.11.2014, 16:29  [ТС]     Узнать запущен ли сервис #5
Ок, спасибо.
Gabberr
 Аватар для Gabberr
101 / 101 / 17
Регистрация: 13.10.2009
Сообщений: 402
28.11.2014, 16:39     Узнать запущен ли сервис #6
YuraAAA, По-моему вы путаете, single instance это да, метод onCreate вызовется один раз при создании, а вот метод onStartCommand вызывается каждый раз при старте сервиса.
YuraAAA
 Аватар для YuraAAA
1563 / 1305 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
28.11.2014, 18:13     Узнать запущен ли сервис #7
Gabberr, ну и что?
Gabberr
 Аватар для Gabberr
101 / 101 / 17
Регистрация: 13.10.2009
Сообщений: 402
28.11.2014, 18:36     Узнать запущен ли сервис #8
Допустим, но разве onStartCommand не будет повторно запускаться при повторном запуске сервиса?
Лонгран, нет
Будет вызываться повторно.
Лонгран
0 / 0 / 0
Регистрация: 19.11.2014
Сообщений: 14
02.12.2014, 14:39  [ТС]     Узнать запущен ли сервис #9
А как узнать, что сервис уже запущен и больше его не запускать?
Gabberr
 Аватар для Gabberr
101 / 101 / 17
Регистрация: 13.10.2009
Сообщений: 402
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
Лонгран
0 / 0 / 0
Регистрация: 19.11.2014
Сообщений: 14
06.12.2014, 10:08  [ТС]     Узнать запущен ли сервис #11
Большое спасибо. Но это значит что мне надо выбрать имя класса сервера позаковырестей, так?

Добавлено через 20 часов 26 минут
Не сервера, а сервиса.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2014, 13:25     Узнать запущен ли сервис
Еще ссылки по теме:

Узнать, запущен ли слушатель Android
Неубиваемый сервис Android
Android Сервис не останавливается
Android Не устанавливается сервис

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

Или воспользуйтесь поиском по форуму:
Gabberr
 Аватар для Gabberr
101 / 101 / 17
Регистрация: 13.10.2009
Сообщений: 402
06.12.2014, 13:25     Узнать запущен ли сервис #12
Да любое адекватное имя можно) сравнение происходит по полному имени, учитывая имя пакета.
Yandex
Объявления
06.12.2014, 13:25     Узнать запущен ли сервис
Ответ Создать тему
Опции темы

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