Activity onResume 后不重新绑定到前台服务

Activity not rebinding to foreground service after onResume

我有一个 activity,我用它来启动前台服务,该服务在后台继续 运行,即使 activity 已关闭。我绑定到此服务,因为我想在 activity 停止和恢复时重新使用相同的服务。

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);

    }
});

在服务class中启动服务如下: ForegroundService.java

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

我遇到的问题是,当 MainActivity 停止时,会调用 unBind,这很好,但是当我恢复 MainActivity 并调用 bindService 时再一次,它永远不会发生。

前台服务是运行ning,我从activity的onResume再次调用bindService但是mBoundmService保持空,即使我容纳 async bindService (我知道 while 循环不好但它用于调试) serviceConnection 没问题。

MainActivity.class:

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

    } while (!mBound);

}

如何让前台服务在 activity 的 onStop 并触发 new bindService 后重新绑定到 MainActivity

我将 bindService 调用移至 onStart 并将之后需要执行的代码移至 onServiceConnected 这解决了我的问题。 unbindService 是在 activity 中从 onStop 调用的。

感谢@greeble31 指出我的逻辑错误。

THIS link 也有关于绑定时间的非常有用的信息