Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在其他活动中重新绑定本地服务不起作用_Java_Android_Android Activity_Android Service - Fatal编程技术网

Java 在其他活动中重新绑定本地服务不起作用

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

在我的应用程序中,我希望与服务建立TCP连接,并将此服务绑定到需要它的每个活动。它从我的登录活动开始,一切都正常工作。代码如下:

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
仅在第一次需要该服务时调用一次,之后仅应绑定到其他活动。