我有一个Activity
包含 3的Fragments
。我有一个有界的Service
.
是不是每次调用
getActivity(). bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
每个 Fragment 内部将导致 3 个客户端绑定到有界Service
?
我认为它将为您提供三个有界服务的客户。
你可以做些什么来确保你只有一个客户服务是
重写 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);
}