3

我有一个Activity包含 3的Fragments。我有一个有界的Service.

是不是每次调用

getActivity(). bindService(intent, mConnection, Context.BIND_AUTO_CREATE);

每个 Fragment 内部将导致 3 个客户端绑定到有界Service

4

1 回答 1

0

我认为它将为您提供三个有界服务的客户。

你可以做些什么来确保你只有一个客户服务是

重写 bindService 方法,如下所示。注意:有了这个,您只有一项活动的有界服务。

private IBinder binder;
private ComponentName name;
private ArrayList<ServiceConnection> conns = new ArrayList<ServiceConnection>();
@Override
    public boolean bindService(Intent service, final ServiceConnection conn, int flags)    {
conns.add(conn);
        if(binder != null)
            conn.onServiceConnected(name, binder);
        return super.bindService(service, new ServiceConnection() {

            @Override
            public void onServiceDisconnected(ComponentName arg0) {
for(ServiceConnection con : conns)
con.onServiceDisconnected(arg0);
            }

            @Override
            public void onServiceConnected(ComponentName arg0, IBinder arg1) {
                name = arg0;
                binder = arg1;
                conn.onServiceConnected(arg0, arg1);
            }
        }, flags);
    }
于 2012-12-02T14:36:47.790 回答