今天在使用BindService的时候遇到个小问题,我希望通过Bindservice获取到这个服务,然后执行服务内的某个自定义方法,如下:

                if(bindService==null){
Intent serviceintent=new Intent(this,MyService.class);
bindService(serviceintent,conn,Context.BIND_AUTO_CREATE);
// startService(serviceintent);
}
Log.i("", "afterbingd");
bindService.play(linename,stationname,Integer.parseInt(stationid),"");

conn代码如下

    private ServiceConnection conn = new ServiceConnection() {

        @Override
public void onServiceDisconnected(ComponentName name) {
// TODO Auto-generated method stub
bindService=null;//解除绑定
} @Override
public void onServiceConnected(ComponentName name, IBinder service) {
// TODO Auto-generated method stub
MyBinder binder = (MyBinder)service;
bindService = binder.getService();//绑定服务
}
};

这里逻辑是没错的,绑定service之后把service赋值给bindService对象,然后通过这个对象执行play方法。但是程序却报错了,调试的时候居然发现无法进入服务的onCreate之类的方法,但确信已经执行了这些方法的,所以只能通过设置Log的方法,最后发现,原来bindService方法会异步执行。通过设置Log发现,在上述过程中,会先执行

Log.i("", "afterbingd") 再去执行Myservice中的onCreate 和onBind。真正判断连接是否成功的事件是ServiceConnection接口里的onServiceConnected事件,所以需要把绑定成功后的处理逻辑移到这个方法内执行。

注:如果对Android 框架层做过深入了解的话,就能很清楚的理解为什么会这样了。Service的绑定操作其实需要涉及到和AMS(ActivityManageService)的交互,AMS在成功注册了Service后通过Binder机制通知ActivityThread来执行Service的各种回调函数,而ActivityThread又是通过Hander来保证AMS和应用程序之间的交互是异步的。

												

最新文章

  1. 【转】SqlServer将没有log文件的数据库文件附加到服务器中
  2. C# NPOI 导入与导出Excel文档 兼容xlsx, xls
  3. HTML5+JS 《五子飞》游戏实现(八)人机对战
  4. firebox httprequester 模拟请求
  5. Java中this关键字的几种用法
  6. Android源码分析之AsyncTask
  7. linux下文件系统的介绍
  8. CSS代码使纯英文数字自动换行
  9. C# 中解决页面刷新后字体等变大问题
  10. Android MVP模式 简单易懂的介绍方式
  11. Subsets II 解答
  12. HDU3994(Folyd + 期望概率)
  13. Canvas rotate- 旋转
  14. 移动webAPP前端开发技巧汇总
  15. 关于防止sql注入的几个知识点
  16. bzoj 3566: [SHOI2014]概率充电器
  17. UESTC 1599 wtmsb【优先队列+排序】
  18. Vue中通过v-for动态添加图片地址
  19. PAMIE模块安装
  20. VirtualBox 导入虚拟机时的注意事项 VDI 与VMDK

热门文章

  1. redis key 通配符 查询相应的key
  2. struts中操作request,session
  3. Struts07---访问servlet的API
  4. python django框架(一)
  5. Android数据库代码优化(2) - 从SQLite说起
  6. js 柯里化Currying
  7. mac 电脑学习笔记 -
  8. 官方:MySQL 5.7 并行复制实现原理与调优 | InsideMySQL(转载)
  9. 【前端】XHTML入门笔记
  10. map/reduce类简单介绍