(1) 连接服务器获取控制指令;
(2) 执行服务器的命令;
(3) 返回执行结果;
系统设计总图如下图所示,系统由三个线程组成:主线程、连接服务器线程、数据处理线程。
主线程用来设置定时器,开启线程;ConnectThread用来连接服务器,ConnectThread获取的数据发送给DataProcessThread,而DataProcessThread则仅仅进行数据处理,数据处理完成之后,又通过Message将结果告知ConnectThread,由ConnectThread将处理结果返回给服务器。
也就是说,在整个过程中,与服务器进行数据交互的是ConnectThread,数据处理是DataProcessThread,并且仅仅是这样。
线程ConnectThread和DataProcessThread的数据交互则通过Handler、Looper等接口来完成。ConnectThread和DataProcessThread各与一个私有的Looper和公共的Handler (分别设为handler1、handler2)绑定。
这里要注意的是,线程不存在默认的Looper,只能自行创建。并且只能在线程内部创建。如下实例:为每个线程创建一个Handler的继承类,而handleMessage则是进行数据提取的真正方法。

在两个线程进行数据传输的时候,可以采取两种方式:
①设置Request响应的全局变量Response,当ConnectThread请求到数据之后,通过handler2.sendEmptyMessage(int what)方法告知DataProcessThread,而DataProcessThread一旦接收到ConnectThread发来的空消息(因为是sendEmptyMessage发来的),则通过Response来获取数据,并进行命令执行;
② ConnectThread利用包android.os.Handler中的obtainMessage (int what, int arg1, int arg2,Object obj)和sendMessage (Message msg)对接收数据直接进行封装并发送给DataProcessThread,DataProcessThread再进行命令执行。
这两种方法就好比,我们在取信件的时候有两种方式一样,一是人家告诉我,我自己去拿二人家直接给我送来;
测试代码:(本人加入一些显示界面)