您的位置:首页 > 其它

bindService笔记

2013-01-20 22:04 441 查看
startService和bindService:

1 通过startService
  Service会经历 onCreate --> onStart
  stopService的时候直接onDestroy
  如果是 调用者 直接退出而没有调用stopService的话,Service会一直在后台运行。
  下次调用者再起来仍然可以stopService。
2 通过bindService
  Service只会运行onCreate, 这个时候 调用者和Service绑定在一起(onBind?)
  调用者退出了,Srevice就会调用onUnbind-->onDestroyed
  所谓绑定在一起就共存亡了。
注意:Service的onCreate的方法只会被调用一次,
  就是你无论多少次的startService又 bindService,Service只被创建一次。
  如果先是bind了,那么start的时候就直接运行Service的onStart方法,
  如果先是start,那么bind的时候就直接运行onBind方法。如果你先bind上了,就stop不掉了,
  只能先UnbindService, 再StopService,所以是先start还是先bind行为是有区别的。

public class MusicService extends Service {

private MusicServiceBinder binder = new MusicServiceBinder();

public class MusicServiceBinder extends Binder {
public MusicService getMusicService() {
return MusicService.this;
}
}

@Override
public IBinder onBind(Intent intent) {
return binder;
}

public void playMusic() {
...
}
}

ServiceConnection serviceConn = new ServiceConnection() {

public void onServiceDisconnected(ComponentName name) {

}

public void onServiceConnected(ComponentName name, IBinder service) {
((MusicServiceBinder)service).getMusicService().playMusic();
}
};
context.bindService(serviceIntent, serviceConn, Context.BIND_AUTO_CREATE);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐