Деятельность не привязывается к сервису переднего плана после onResume - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть действие, которое я использую для запуска службы переднего плана, которая продолжает работать в фоновом режиме, даже когда действие закрыто.Я привязываюсь к этому сервису, так как хочу повторно использовать тот же сервис, когда действие остановлено и возобновлено.

MainActivity.java

//Service button click listener
startSvcButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

        stopService(new Intent(MainActivity.this, ForegroundService.class));
        startService(new Intent(MainActivity.this, ForegroundService.class));
        bindService(serviceIntent, mConnection, Context.BIND_AUTO_CREATE);
        moveTaskToBack(true);

    }
});

В классе обслуживания сервис запускается какследующим образом: ForegroundService.java

startForeground(Constants.NOTIFICATION_ID.FOREGROUND_SERVICE, serviceNotification);
return Service.START_STICKY;

У меня проблема в том, что когда MainActivity остановлен, вызывается unBind, что хорошо, но когда я возобновляю MainActivity и вызываю bindService опять же, этого никогда не происходит.

Служба переднего плана работает, я снова звоню bindService из onResume действия, но mBound и mService остаются нулевыми, даже когда я принимаю async bindService (я знаю, покацикл не очень хорош, но он предназначен для отладки. serviceConnection в порядке.

MainActivity.class:

if (fsRunning) {
    if (!mBound) {
        bindService(serviceIntent, mConnection, Context.BIND_AUTO_CREATE);
    }
    do {
        SystemClock.sleep(500);

    } while (!mBound);

}

Как заставить службу переднего плана выполнить повторное связывание с MainActivity послена onStop активности и запуска new bindService?

1 Ответ

0 голосов
/ 05 декабря 2018

Я переместил мой bindService вызов на onStart и переместил код, который должен был быть выполнен после на onServiceConnected, это решило проблему для меня.unbindService был вызван из onStop в упражнении.

Спасибо @ greeble31 за указание на ошибку в моей логике.

Эта ссылка также содержит очень полезную информацию о времени привязки

...