维持tcp连接属于耗时的IO操作,首先我们可以肯定的是,我们要用到线程,有人会说用服务,但是服务是运行在主线程(主线程要处理UI操作)上的,所以,在服务里处理耗时操作会造成主线程阻塞。
确定用线程后,我们就得确定线程的启用位置,首先,如果用到活动(一个应用中一般不止一个活动)当中,这与android设计原则违背,活动主要处理UI,所以这个线程只能放到服务当中,下面我们需要解决两个问题:通信和同步,首先通信问题是活动和服务之间,以及在活动中线程间的通信。服务和活动间的通信是通过Binder,活动与线程间就是用Handler和Looper了。通信还是比较好解决的,接着就是同步问题,这个一直令我很迷茫, 首先android当中,调用一些API貌似不是顺序执行,所以同步基本靠试,有没有大神可以提供一下同步的方法。tcp同步 tcp同步通信
确定用线程后,我们就得确定线程的启用位置,首先,如果用到活动(一个应用中一般不止一个活动)当中,这与android设计原则违背,活动主要处理UI,所以这个线程只能放到服务当中,下面我们需要解决两个问题:通信和同步,首先通信问题是活动和服务之间,以及在活动中线程间的通信。服务和活动间的通信是通过Binder,活动与线程间就是用Handler和Looper了。通信还是比较好解决的,接着就是同步问题,这个一直令我很迷茫, 首先android当中,调用一些API貌似不是顺序执行,所以同步基本靠试,有没有大神可以提供一下同步的方法。tcp同步 tcp同步通信
解决方案 »
- 利用android的socket连接一个带有固定IP的wifi模块
- android开发中为何很多.h和.cpp文件开头都会有个namespace android
- 求教一个简单问题,Android如何把int型转换成String型?
- 请问关于电源键的响应事件。。
- 开机自动启动问题
- 用安卓谷歌地图API的疑惑
- android中,如何判断一个点在一个范围内
- 安卓源码下编译问题cc1plus: 错误: unrecognized command line option ‘-mfloat-abi=softfp’
- 大家自建数据统计还是用umeng
- AlertDialog的点击事件报错!!!求大神
- 介绍一本不错的 Andriod 书籍
- 问下 有道云笔记android 的同步原理是什么啊?
1. 做一个服务,在服务里面启动一个线程
2. 在线程里面启动socket连接
3. 收到socket消息之后,简单点的办法直接Broadcast出去,复杂点的,找个地方存起来,然后每个Activity的onStart时候bind到服务上,从服务获取之前收到的消息,等等
至于同步应该是 线程向Activity传递数据 使UI改变吧 这些 可以百度没有难度的
绑定服务的API就是那样的,有时候这句代码的下一句都执行了,但是服务依然没有返回