Android之中,只有主线程当中能修改UI 的值,WorkThread中不能修改。因此在WorkThrean中运行比较耗时的程序,即在WorkThread中获取数据,然后将数据发送的主线程,再修改UI。
根据以上的思路来理解Android中个线程之间的通讯。
1、新建个TestHandler类,继承至Handler,
1)复写handlerMessage方法,来实现获取消息队列中的信息;
//新建handler对象 Handler handler = new TestHandler(); //TestHandler类 class TestHandler extends Handler{ @Override public void handleMessage(Message msg) { } }
2、WorkThread类
1)继承至Thread;
2)在这里面进行发送数据的程序;
3)handler的obtainMessage方法可以获取到消息队列中的消息;
4)handler的sendMessage方法:将数据发送到主线程;
具体:
class testThread extends Thread{ @Override public void run() { try { //WorkThread中要做的事情 Thread.sleep(2000); } catch (InterruptedException e){ e.printStackTrace(); } finally{ //将消息发到主线程 String s = "test String"; Message msg = handler.obtainMessage(); msg.obj = s; handler.sendMessage(msg); } } }
3、编译之后实现的功能就是
1)按键按下后,启动WorkThread线程;
2)线程中处理、获取数据,再数据发送到主线程;
3)主线程中获得数据,再修改UI;
4、以后深入之后可以再WorkThread中获取网络数据,再发到主线程中,修改UI,从而显示给用户。
5、刚学Android不久,各处描述可能有不妥之处,以后发现再回过头来修改。。。。。
原文:http://www.cnblogs.com/YiStyle/p/5985717.html