Как забиндить сервис в повторяющейся задаче?

В своём приложения я использую Work Manager для выполнения определённых задач. Логика работы такая: На устройство приходит push(с периодичностью 5 минут). Он в свою очередь запускает одноразовый work. В work исходя из пуша выполняются 3 действия. Это запуск сервиса, запуск аларм менеджера, и остановка сервиса. В doWork у меня биндится сервис с нулевым флагом. Допустим пришло у меня 20 пушей, соответственно 20 подписчиков на бинд. И когда я хочу их отбиндить и остановить сервис, onServiceDisconect сработает 20 раз. Бинд мне необходим для получения некоторых параметров с сервиса. Сервис работает в форграунде. Могу ли я получить доступ к свойствам сервиса и не биндить его повторно при выполнении ворка? Если нет, то как выйти из положения? Прошу навести на мысль.

public Result doWork() {
    SharedPreferences sharedPreferences = context.getSharedPreferences(APP_PREFERENCES, Context.MODE_PRIVATE);
    login = sharedPreferences.getString("Login", "");
        intent = new Intent(context, GpsService.class);
        context.bindService(intent, connection, 0);
    if(action.equals("onStart")) {
        context.startService(intent);
    }
        return Result.success();
}
private final ServiceConnection connection = new ServiceConnection() {

    @Override
    public void onServiceConnected(ComponentName className,
                                   IBinder service) {
        GpsService.LocalBinder binder = (GpsService.LocalBinder) service;
        mService = binder.getService();
        if(mService.locations!=null)
        ..........SomeMthods.............
        AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
        PendingIntent pi = PendingIntent.getService(context, 0, intent, 0);
        if(action.equals("onStop")) {
            alarmManager.cancel(pi);
            mService.StopUpdates();
            context.unbindService(connection);
            context.stopService(intent);
        }
        else if(action.equals("")){
            alarmManager.setAlarmClock(new AlarmManager.AlarmClockInfo(System.currentTimeMillis() + (60 * 1000 * 4), pi), pi);
        }

    }

    @Override
    public void onServiceDisconnected(ComponentName arg0) {
        CreateNotification("Stop!");
    }
};

В сервисе:

@Override
public IBinder onBind(Intent intent) {
    return binder;
}

public class LocalBinder extends Binder {
    MyService getService() {
        return MyService.this;
    }
}

Ответы (0 шт):