在其他地方通过ServiceConnection 获取Service
当我们建立一个服务时,想在其他地方获取到这个服务的实例时,就需要用到此方法,其中一种写法如下:
在服务类里建立一个内部类:
1 public class SocketBinder extends Binder {
2 /*返回SocketService 在需要的地方可以通过ServiceConnection获取到SocketService */
3 public SocketService getService() {
4 return SocketService.this;
5 }
6 }
然后在需要获取的地方通过ServiceConnection获取:
1 ServiceConnection serviceConnection = new ServiceConnection() {
2 @Override
3 public void onServiceConnected(ComponentName name, IBinder service) {
4 SocketService.SocketBinder binder = (SocketService.SocketBinder) (service);
5 mSocketService = binder.getService();
6 }
7
8 @Override
9 public void onServiceDisconnected(ComponentName name) {
10 mSocketService = null;
11 }
12 };
最后,直接通过bindService实例对象:
1 if (mSocketIntent == null) {//4.30 2 mSocketIntent = new Intent(this, SocketService.class); 3 bindService(mSocketIntent, serviceConnection, BIND_AUTO_CREATE);//获取到Socket服务实例 4 } 5 6 对象:
private Intent mSocketIntent; 7 private SocketService mSocketService;