Есть ли способ идентифицировать в onStartCommand службы, если она создана системой для STICKY?

#android #android-intent #android-service

#Android #android-намерение #android-сервис

Вопрос:

У меня запущена служба переднего плана, и это служба STICKY_REDELIVER_INTENT. Проблема в том, что каждый раз, когда он запускается снова из-за поведения sticky service, уведомление будет отображаться со звуком. Это происходит много раз в день, и это определенно будет раздражать пользователя. Есть ли способ ограничить звук уведомления только при первом его отображении?

Комментарии:

1. используйте для этого общий префикс для первого вхождения.

Ответ №1:

Вы можете проверить, запущена эта служба или нет. если она не запущена, вы можете запустить службу.

Для проверки запущена служба или нет:

 if (isMyServiceRunning(MainActivity.this, xyzService.class)) { // Service class name
    // Service running
} else {
    // Service Stop
}



public static boolean isMyServiceRunning(Activity activity, Class<?> serviceClass) {
        ActivityManager manager = (ActivityManager) activity.getSystemService(Context.ACTIVITY_SERVICE);
        for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
            if (serviceClass.getName().equals(service.service.getClassName())) {
                return true;
            }
        }
        return false;
    }