维持tcp连接属于耗时的IO操作,首先我们可以肯定的是,我们要用到线程,有人会说用服务,但是服务是运行在主线程(主线程要处理UI操作)上的,所以,在服务里处理耗时操作会造成主线程阻塞。
确定用线程后,我们就得确定线程的启用位置,首先,如果用到活动(一个应用中一般不止一个活动)当中,这与android设计原则违背,活动主要处理UI,所以这个线程只能放到服务当中,下面我们需要解决两个问题:通信和同步,首先通信问题是活动和服务之间,以及在活动中线程间的通信。服务和活动间的通信是通过Binder,活动与线程间就是用Handler和Looper了。通信还是比较好解决的,接着就是同步问题,这个一直令我很迷茫, 首先android当中,调用一些API貌似不是顺序执行,所以同步基本靠试,有没有大神可以提供一下同步的方法。
tcp同步? tcp 同步 通信
------解决方案--------------------
哪有这么麻烦,线程和服务有什么好矛盾的。
1. 做一个服务,在服务里面启动一个线程
2. 在线程里面启动socket连接
3. 收到socket消息之后,简单点的办法直接Broadcast出去,复杂点的,找个地方存起来,然后每个Activity的onStart时候bind到服务上,从服务获取之前收到的消息,等等
------解决方案--------------------
你说的通信 说白了就是服务于线程 线程之间的数据传递
至于同步应该是 线程向Activity传递数据 使UI改变吧 这些 可以百度没有难度的