本文由PurpleSword(jzj1993)原创,转载请注明
原文网址 http://blog.csdn.net/jzj1993
在Service中自定义Binder类,实现方法getService;覆写Service的onBind方法
public class MainService extends Service {
@Override
public void onCreate() {
super.onCreate();
}
@Override
public void onDestroy() {
super.onDestroy();
}
@Override
public IBinder onBind(Intent intent) {
return new MsgBinder();
}
public class MsgBinder extends Binder {
/**
* 获取当前Service的实例
*
* @return
*/
public MainService getService() {
return MainService.this;
}
}
}
Activity中通过bindService绑定Service,Activity结束时断开绑定(注意:绑定时会自动启动Service,Activity终止时Service也会停止,要让Service后台运行应该同时调用StartService)
从ServiceConnection的回调方法中可以获取自定义的Binder实例,从而获取Service实例,即可方便的进行通信
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = new Intent(ActivityMain.this, MainService.class);
this.startService(intent);
bindService(intent, conn, Context.BIND_AUTO_CREATE);
}
@Override
public void onDestroy() {
this.unbindService(conn);
super.onDestroy();
}
MainService svc;
private ServiceConnection conn = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName name) {
}
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
MsgBinder binder = (MsgBinder) service;
svc = binder.getService();
}
};