Android线程之间的通讯

  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不久,各处描述可能有不妥之处,以后发现再回过头来修改。。。。。

原文地址:https://www.cnblogs.com/YiStyle/p/5985717.html