Как проверить, работает ли сервис на Android?

Я просто переопределял функцию GetHashCode, но кажется, что даже если GetHashCode вернул такое же значение, обновления не произошло. Имея Equals, все весело и весело

880
задан Athira 10 May 2019 в 13:04
поделиться

5 ответов

У меня была та же проблема недавно. Так как моя служба была локальна, я закончил тем просто, что использовал статическое поле в классе обслуживания для переключения состояния, как описано hackbod здесь

РЕДАКТИРОВАНИЕ (для записи):

Вот решение, предложенное hackbod:

, Если Ваш код клиента и сервера является частью того же .apk и Вы связываете с сервисом с конкретным Намерением (тот, который определяет точный класс обслуживания), тогда Вы можете просто сделать, чтобы Ваш сервис установил глобальную переменную, когда это работает, тот Ваш клиент может проверить.

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

272
ответ дан Haresh Chaudhary 10 May 2019 в 23:04
поделиться

Для kotlin можно использовать ниже кода.

fun isMyServiceRunning(calssObj: Class<SERVICE_CALL_NAME>): Boolean {
    val manager = requireActivity().getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
    for (service in manager.getRunningServices(Integer.MAX_VALUE)) {
        if (calssObj.getName().equals(service.service.getClassName())) {
            return true;
        }
    }
    return false;
}
0
ответ дан Prashant A Gosai 28 July 2019 в 16:32
поделиться

В kotlin можно добавить, что логическая переменная в компаньоне возражает и проверяет свое значение от любого класса, который Вы хотите:

companion object{
     var isRuning = false

}

Изменение это оценивает, когда сервис создается и уничтожил

 override fun onCreate() {
        super.onCreate()
        isRuning = true
    }

override fun onDestroy() {
    super.onDestroy()
    isRuning = false
    }
2
ответ дан 22 November 2019 в 21:03
поделиться

Другой подход с помощью kotlin. Вселенный в другие пользовательские ответы

fun isMyServiceRunning(serviceClass: Class<*>): Boolean {
    val manager = getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
    return manager.getRunningServices(Integer.MAX_VALUE)
            .any { it.service.className == serviceClass.name }
}
0
ответ дан 22 November 2019 в 21:03
поделиться

Для Вас возможно использовать это опции от опций Android Developer видеть, работает ли Ваша услуга все еще в фоновом режиме.

1. Open Settings in your Android device.
2. Find Developer Options, open it.
3. Find Running Services option, open it.
4. Find your app icon, open it.
5. You will then see all the service that belongs to your app running in the background.
-1
ответ дан 22 November 2019 в 21:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: