码迷,mamicode.com
首页 > 移动开发 > 详细

2017.12.18 Android开发之消息队列(实现子线程修改UI组件)

时间:2017-12-18 19:04:14      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:read   androi   prot   线程   over   爱国   get   current   div   

 

1.界面布局,以及组件初始化:

技术分享图片

组件初始化:

 private Button button;
    private Handler handler;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button=(Button)findViewById(R.id.button);
        button.setOnClickListener(new ButtonListener());
        handler=new FirstHandler();
    }

 

2.消息队列的使用:

    class ButtonListener implements View.OnClickListener{  //设置监听器,使得每点一次按钮生成一次消息
        @Override
        public void onClick(View view) {
            Message msg=handler.obtainMessage();
            msg.what=8;                    //msg的其中一个参数,可以设置很多msg的参数
            handler.sendMessage(msg);     //把消息扔出去
        }
    }

    class FirstHandler extends Handler{
        @Override
        public void handleMessage(Message msg) {     //处理消息,传一个消息体进来,理解为一个对象,可以是字符串,int型之类的
            int what=msg.what;
            System.out.println("数据what是:"+what);


            super.handleMessage(msg);
        }
    }

 

3.通过消息队列来修改主线程的文字:

 class MyHandler extends Handler{
    @Override
    public void handleMessage(Message msg) {
        System.out.println("这是来自MyHandler的信息:"+Thread.currentThread().getName());
        String s=(String)msg.obj;
        textview.setText(s);
        super.handleMessage(msg);
    }
}
    class ButtonListener implements View.OnClickListener{
        @Override
        public void onClick(View view) {
            Thread thread=new NetWorkThread();
            thread.start();
        }
    }

    class NetWorkThread extends Thread{
        @Override
        public void run() {
            System.out.println("来自NetWorkThread的信息:"+Thread.currentThread().getName());
            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            String s="有理想的爱国青年";
            Message msg=handler.obtainMessage();
            msg.obj=s;
            handler.sendMessage(msg);

            super.run();
        }
    }

技术分享图片

 

2017.12.18 Android开发之消息队列(实现子线程修改UI组件)

标签:read   androi   prot   线程   over   爱国   get   current   div   

原文地址:http://www.cnblogs.com/hqutcy/p/8058231.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!