看了一些Binder机制方面的文章,有一个问题不明白Server端的数据怎么主动上发给Client端?

解决方案 »

  1.   

    Client端数据下发给Server端可以通过Binder机制的transact( )函数,但Server端的数据怎么主动上发给Client端?不明白!
      

  2.   

    你研究的问题就是现在很多CP在做的工作:PushService,也就是推送服务,用来推送广告和其他消息。一般来说,Client和Server进行长连接的时候,肯定会有心跳包,我们当时做的时候就是通过在心跳包里面包含请求命令,从而从Server往Client端推送一些广告信息的。
      

  3.   

    不知道ANDROID下那个SERVICE是这样的例子,那个SERVICE例子可以用来借鉴参考
      

  4.   

    Android的IPC机制——Binder (2)
    http://blog.sina.com.cn/s/blog_40e9d4dd0100xifg.html2)服务端代理对象BpBinderBpBinder是服务端代理对象,即远程对象在当前进程的代理。实际上,它也是Binder通信存在于客户端的进程,它实现了IBinder接口,它的transact函数的实现如代码清单3-47所示。代码清单3-47  BpBinder::transact的实现status_t BpBinder::transact(   
        uint32_t code, const Parcel& data, Parcel   
    reply, uint32_t flags)   
    {   
        // Once a binder has died, it will never come back to life.   
        if (mAlive) {   
            status_t status = IPCThreadState::self()->transact(   
                mHandle, code, data, reply, flags);   
            if (status == DEAD_OBJECT) mAlive = 0;   
            return status;   
        }   
        return DEAD_OBJECT;   
    }  
    该函数的参数分别为请求的ID号、请求的参数、返回的结果、额外的标识(通常为0)。它实际上只是简单地调用了IPCThreadState::self()的transact函数,将请求通过内核模块发送给了服务端,服务端处理完请求之后,沿原路返回结果给调用者。注意  transact方法是同步方法,将会挂起客户进程的当前线程,直到Service把请求处理完成并返回结果。
      

  5.   

    Android的IPC机制——Binder (1)
    http://blog.sina.com.cn/s/blog_40e9d4dd0100xiee.html
      

  6.   

    调用transact( )的时候有一个参数就是返回包啊