Как забиндить сервис в повторяющейся задаче?
В своём приложения я использую 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;
}
}