Java 在其他活动中重新绑定本地服务不起作用
在我的应用程序中,我希望与服务建立TCP连接,并将此服务绑定到需要它的每个活动。它从我的登录活动开始,一切都正常工作。代码如下:Java 在其他活动中重新绑定本地服务不起作用,java,android,android-activity,android-service,Java,Android,Android Activity,Android Service,在我的应用程序中,我希望与服务建立TCP连接,并将此服务绑定到需要它的每个活动。它从我的登录活动开始,一切都正常工作。代码如下: private TCPService mService; private boolean mBound = false; @Override protected void onStart() { super.onStart(); Intent intent = new Intent(this, TCPService.class); start
private TCPService mService;
private boolean mBound = false;
@Override
protected void onStart() {
super.onStart();
Intent intent = new Intent(this, TCPService.class);
startService(intent);
bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
}
@Override
protected void onStop() {
super.onStop();
if (mBound) {
unbindService(mConnection);
mBound = false;
}
}
/** Defines callbacks for service binding, passed to bindService() */
private ServiceConnection mConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName className, IBinder service) {
// We've bound to LocalService, cast the IBinder and get LocalService instance
TCPService.LocalBinder binder = (TCPService.LocalBinder)service;
mService = binder.getService();
mBound = true;
}
@Override
public void onServiceDisconnected(ComponentName arg0) {
mBound = false;
}
};
现在我想通过使用几乎相同的代码将服务绑定到另一个活动中,而不使用startService(intent)代码>但是mBound从来没有设置为true,我不能像预期的那样访问服务功能
以下是该服务的实现:
public class TCPService extends Service {
private final IBinder myBinder = new LocalBinder();
public class LocalBinder extends Binder {
public TCPService getService() {
return TCPService.this;
}
}
@Override
public IBinder onBind(Intent intent) {
return myBinder;
}
}
我错过了什么?我是否应该检查可能导致这种行为的任何东西
提前感谢如果您绑定到startService,您不需要调用它,尽管我怀疑这不是原因。您是否覆盖了服务的onBind
方法以返回绑定器实例?默认情况下,实现将返回null,这意味着不允许绑定到服务。是的,我覆盖了onBind
方法,请参阅更新问题中的代码startService
仅在第一次需要该服务时调用一次,之后仅应绑定到其他活动。