博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android BindService中遇到的一个小问题
阅读量:4959 次
发布时间:2019-06-12

本文共 1500 字,大约阅读时间需要 5 分钟。

   今天在使用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),"2");

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和应用程序之间的交互是异步的。
 
 

转载于:https://www.cnblogs.com/linjzong/p/3361634.html

你可能感兴趣的文章
URL中的特殊字符处理
查看>>
HOT SUMMER 每天都是不一样,积极的去感受生活 C#关闭IE相应的窗口 .
查看>>
windows平台上编译mongdb-cxx-driver
查看>>
optionMenu-普通菜单使用
查看>>
MVC3分页传2参
查看>>
2016-2017-2点集拓扑作业[本科生上课时]讲解视频
查看>>
【译】Hello Kubernetes快速交互实验手册
查看>>
appium(13)- server config
查看>>
图形学噪声解析
查看>>
IIS负载均衡-Application Request Route详解第六篇:使用失败请求跟踪规则来诊断ARR...
查看>>
管理信息系统 第三部分 作业
查看>>
[Leetcode Week13]Search a 2D Matrix
查看>>
通过被调函数改变主调函数的值
查看>>
java 对象的序列化与反序列化
查看>>
二叉树、树、森林
查看>>
查看端口占用cmd命令
查看>>
2019.01.17王苛震作业
查看>>
Halcon学习(八)文本操作
查看>>
MFC电子词典
查看>>
简单工厂(Simple Factory)
查看>>