维持tcp连接属于耗时的IO操作,首先我们可以肯定的是,我们要用到线程,有人会说用服务,但是服务是运行在主线程(主线程要处理UI操作)上的,所以,在服务里处理耗时操作会造成主线程阻塞。
    确定用线程后,我们就得确定线程的启用位置,首先,如果用到活动(一个应用中一般不止一个活动)当中,这与android设计原则违背,活动主要处理UI,所以这个线程只能放到服务当中,下面我们需要解决两个问题:通信和同步,首先通信问题是活动和服务之间,以及在活动中线程间的通信。服务和活动间的通信是通过Binder,活动与线程间就是用Handler和Looper了。通信还是比较好解决的,接着就是同步问题,这个一直令我很迷茫, 首先android当中,调用一些API貌似不是顺序执行,所以同步基本靠试,有没有大神可以提供一下同步的方法。tcp同步 tcp同步通信

解决方案 »

  1.   

    Android 哪些API 不是顺序的?
      

  2.   

    哪有这么麻烦,线程和服务有什么好矛盾的。
    1. 做一个服务,在服务里面启动一个线程
    2. 在线程里面启动socket连接
    3. 收到socket消息之后,简单点的办法直接Broadcast出去,复杂点的,找个地方存起来,然后每个Activity的onStart时候bind到服务上,从服务获取之前收到的消息,等等
      

  3.   

    你说的通信  说白了就是服务于线程 线程之间的数据传递 
     至于同步应该是 线程向Activity传递数据 使UI改变吧  这些 可以百度没有难度的
      

  4.   

    这个可以的,我之前socket通信就是用这种方法!
      

  5.   


    绑定服务的API就是那样的,有时候这句代码的下一句都执行了,但是服务依然没有返回
      

  6.   

    就是这些API搞的,不知道它们具体做了什么,所以才引出这么多问题