onResume之后活动未重新绑定到前台服务

时间:2018-12-04 08:11:23

标签: java android android-service-binding foreground-service

我有一个活动,我可以使用它启动一个前台服务,即使该活动已关闭,该服务仍在后台运行。我绑定到该服务是因为我想在活动停止和恢复时重新使用同一服务。

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,但是mBoundmService仍然为空,即使我容纳{{1 }}(我知道while循环不好,但它用于调试) async bindService没问题。

MainActivity.class:

serviceConnection

在活动if (fsRunning) { if (!mBound) { bindService(serviceIntent, mConnection, Context.BIND_AUTO_CREATE); } do { SystemClock.sleep(500); } while (!mBound); } 之后如何触发前台服务重新绑定到MainActivity并触发onStop

1 个答案:

答案 0 :(得分:1)

我将bindService的调用移到了onStart,并将需要执行的代码移到了onServiceConnected,这为我解决了这个问题。在活动中从unbindService调用了onStop

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

THIS链接还包含有关绑定时间的非常详尽的信息