当我们建立一个服务时,想在其他地方获取到这个服务的实例时,就需要用到此方法,其中一种写法如下:
在服务类里建立一个内部类:
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;