zoukankan      html  css  js  c++  java
  • Android BindService中遇到的一个小问题

       今天在使用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和应用程序之间的交互是异步的。
    
    
    
    
  • 相关阅读:
    WINCE6.0新建工程编译出错的问题
    单片机C语言中的data,idata,xdata,pdata,code
    WinCE 6.0学习笔记一
    Visual Studio 2005 学习笔记一 入门
    Zigbee系列 学习笔记六(设置项)
    Zigbee系列 学习笔记五(信道选择)
    Zigbee系列 学习笔记四(睡眠及唤醒)
    Zigbee系列 学习笔记三(初始化程序解析)
    Zigbee调试问题 IAR编译出现 Fatal Error[e72]: Segment BANKED_CODE must be defined in a segment definition option (-Z, -b or -P)
    关于懒设计
  • 原文地址:https://www.cnblogs.com/linjzong/p/3361634.html
Copyright © 2011-2022 走看看