我有一个服务,它在第一次调用时正确启动和绑定,但是当被其他活动调用时,对同一服务的连续绑定会失败。
代码:
activity.startService(new Intent().setClass(activity, ServerListenerService.class));
xmppServiceConnection = new ServiceConnection() {
public void onServiceDisconnected(ComponentName name) {
ServerActivityConnection.this.xmppService = null;
}
public void onServiceConnected(ComponentName name, IBinder binder) {
//set everything up
}
};
activity.bindService(new Intent().setClass(activity, ServerListenerService.class), xmppServiceConnection, Activity.BIND_AUTO_CREATE);
第二次,在调用activity.bindService
之后,永远不会调用serviceconnection的onServiceConnected
方法。我使用一个连接类来执行绑定,因此这两个活动的方法是相同的。该服务也正确添加了清单文件。
有什么想法吗?
非常感谢
答案 0 :(得分:3)
在尝试使用相同的ServiceConnection
重新绑定之前,请确保取消绑定。
此外,您通常不需要startService()
和bindService()
。您永远不需要startService()
和bindService(..., BIND_AUTO_CREATE)
。除非您有特殊原因需要使用startService()
以及bindService()
,否则我只会使用一个。
答案 1 :(得分:0)
就我而言,问题与bindService()
有关。
我在onResume()
中只打过一次电话-以下是一些示例。
似乎每次启动服务时都应调用bindService()
(在我的情况下为ContextCompat.startForegroundService()
)。