在其他地方通过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;

 

posted @ 2019-05-18 09:44  bbqopdd  阅读(1297)  评论(0编辑  收藏  举报