Как повторно привязать к работающему сервису? - PullRequest
0 голосов
/ 05 января 2019

Мой сервис - это 3-часовой таймер, который должен работать в фоновом режиме до тех пор, пока время не закончится (даже если пользователь выходит из приложения).

Я успешно создал и связал свой сервис с фрагментом. Это позволяет мне показывать таймер в реальном времени пользователю.

Когда я выхожу из приложения, служба продолжает работать должным образом и даже отправляет уведомление пользователю после завершения таймера (даже если приложение не открыто)

Моя проблема заключается в следующем: Когда пользователь закрывает приложение, а затем снова открывает его до окончания таймера, я не могу получить ссылку на этот запущенный сервис ...

Вот мой код для создания и привязки сервиса

private ServiceConnection connection = new ServiceConnection(){
    @Override
    public void onServiceConnected(ComponentName componentName, IBinder 
                                   binder){
        TimerService.TimerBinder binderTime
         = (TimerService.TimerBinder) binder;
        Funx.getInstance().setTimerService(binderTime.getOgBinder());
        bound = true;
    }

    @Override
    public void onServiceDisconnected(ComponentName componentName){
        bound = false;
    }
};

@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);

    Intent intent = new Intent(getContext(), TimerService.class);
    Objects.requireNonNull(getContext()).bindService(intent, connection, 
    Context.BIND_AUTO_CREATE);
}

 @Override
    public void onDestroy(){
    super.onDestroy();
    if (bound){
        Objects.requireNonNull(getActivity()).unbindService(connection);
        bound = false;
    }
 }
...