设为首页 加入收藏

TOP

Android多线程之Handler、Looper、Message在基于HTTP系统中的应用
2014-11-24 12:07:23 来源: 作者: 【 】 浏览:2
Tags:Android 线程 Handler Looper Message 基于 HTTP 系统 应用

(1) 连接服务器获取控制指令;


(2) 执行服务器的命令;


(3) 返回执行结果;


系统设计总图如下图所示,系统由三个线程组成:主线程、连接服务器线程、数据处理线程。


主线程用来设置定时器,开启线程;ConnectThread用来连接服务器,ConnectThread获取的数据发送给DataProcessThread,而DataProcessThread则仅仅进行数据处理,数据处理完成之后,又通过Message将结果告知ConnectThread,由ConnectThread将处理结果返回给服务器。


也就是说,在整个过程中,与服务器进行数据交互的是ConnectThread,数据处理是DataProcessThread,并且仅仅是这样。


线程ConnectThreadDataProcessThread的数据交互则通过HandlerLooper等接口来完成。ConnectThreadDataProcessThread各与一个私有的Looper和公共的Handler (分别设为handler1handler2)绑定。


这里要注意的是,线程不存在默认的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)对接收数据直接进行封装并发送给DataProcessThreadDataProcessThread再进行命令执行。


这两种方法就好比,我们在取信件的时候有两种方式一样,一是人家告诉我,我自己去拿二人家直接给我送来;


测试代码:(本人加入一些显示界面)


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android Looper和Handler分析 下一篇Android SDK 实例之 Snake 游戏深..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·PostgreSQL 索引 - (2025-12-25 22:20:43)
·MySQL Node.js 连接 (2025-12-25 22:20:41)
·SQL 撤销索引、表以 (2025-12-25 22:20:38)
·Linux系统简介 (2025-12-25 21:55:25)
·Linux安装MySQL过程 (2025-12-25 21:55:22)