Android服务正确启动/绑定,但仅限第一次

时间:2010-08-01 05:48:46

标签: android android-service

我有一个服务,它在第一次调用时正确启动和绑定,但是当被其他活动调用时,对同一服务的连续绑定会失败。

代码:

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方法。我使用一个连接类来执行绑定,因此这两个活动的方法是相同的。该服务也正确添加了清单文件。

有什么想法吗?

非常感谢

2 个答案:

答案 0 :(得分:3)

在尝试使用相同的ServiceConnection重新绑定之前,请确保取消绑定。

此外,您通常不需要startService()bindService()。您永远不需要startService()bindService(..., BIND_AUTO_CREATE)。除非您有特殊原因需要使用startService()以及bindService(),否则我只会使用一个。

答案 1 :(得分:0)

就我而言,问题与bindService()有关。 我在onResume()中只打过一次电话-以下是一些示例。

似乎每次启动服务时都应调用bindService()(在我的情况下为ContextCompat.startForegroundService())。