Я просто переопределял функцию GetHashCode
, но кажется, что даже если GetHashCode
вернул такое же значение, обновления не произошло. Имея Equals
, все весело и весело
У меня была та же проблема недавно. Так как моя служба была локальна, я закончил тем просто, что использовал статическое поле в классе обслуживания для переключения состояния, как описано hackbod здесь
РЕДАКТИРОВАНИЕ (для записи):
Вот решение, предложенное hackbod:
, Если Ваш код клиента и сервера является частью того же .apk и Вы связываете с сервисом с конкретным Намерением (тот, который определяет точный класс обслуживания), тогда Вы можете просто сделать, чтобы Ваш сервис установил глобальную переменную, когда это работает, тот Ваш клиент может проверить.
у Нас сознательно нет API, чтобы проверить, работает ли услуга, потому что, почти бесперебойно, когда Вы хотите сделать что-то как этот, что Вы заканчиваете с условиями состязания в своем коде.
Для 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;
}
В kotlin можно добавить, что логическая переменная в компаньоне возражает и проверяет свое значение от любого класса, который Вы хотите:
companion object{
var isRuning = false
}
Изменение это оценивает, когда сервис создается и уничтожил
override fun onCreate() {
super.onCreate()
isRuning = true
}
override fun onDestroy() {
super.onDestroy()
isRuning = false
}
Другой подход с помощью 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 }
}
Для Вас возможно использовать это опции от опций 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.