美文网首页
Handler在主线程和子线程

Handler在主线程和子线程

作者: 安多人 | 来源:发表于2018-04-18 03:19 被阅读0次

handler用来处理一些费时的操作,数据查询,连接网络等。
handler的机制:handler包含handler,通过sendEmptyMessage将数据发送到Messagequen中,Looper从Messagequen中拿到我们的message。这里要实现的功能是点击按钮模拟数据的发送,我们点击一个按钮就生成一个线程,在线程中实现数据的发送。发送到handler中的handleMessage。

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case 0:
                    String src = (String) msg.obj;
                    textView.setText(src);
                    break;
                case 1:
                    break;
                case 2:
                    break;
            }
        }
    };
    private TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findViewById(R.id.button1).setOnClickListener(this);
        findViewById(R.id.button2).setOnClickListener(this);
        findViewById(R.id.button3).setOnClickListener(this);
        textView = findViewById(R.id.textView);

    }



    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            //点击一次按钮,请求一个数据
            case R.id.button1:
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        Message message = new Message();
                        message.what = 0;
                        message.obj = "1323098878";
                        handler.sendMessage(message);
                    }
                }).start();
                break;
            case R.id.button2:
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                    }
                }).start();
                break;
            case R.id.button3:
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                    }
                }).start();
                break;
        }
    }
}

在子线程中,我们在主线程中,模拟耗时操作。

public class MainActivity extends AppCompatActivity {//handler
    Handler handler = new Handler() {//主线程中的Handler

        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        new Thread(new Runnable() {//开启一个子线程,模拟耗时操作
            @Override
            public void run() {
                SystemClock.sleep(2000);
                //发送消息到主线程
                handler.sendEmptyMessage(0);
                //调用Looper.preare();
                Looper.prepare();
                handlerThread = new Handler(){
                    @Override
                    public void handleMessage(Message msg) {
                        super.handleMessage(msg);
                    }
                };
                handlerThread.sendEmptyMessage(1);
                Looper.loop();//将handlerThread加入到Looper中
            }
        }).start();

相关文章

  • 死磕Handler(2)

    Handler在Thread使用 在子线程中使用handler实例: 可以看到,在子线程中创建handler需要注...

  • Java并发基础:线程间通信

    在Android中,我们有Handler,在子线程和主线程之间通信,只需要拿到主线程的Handler发送消息即可,...

  • HandlerThread 使用

    在Android中,主线程和子线程通信,最简单最直接的方式就是使用Handler和Message,在子线程中使用 ...

  • Android Handler sendMessage 和 po

    Handler介绍 Handler主要用于异步消息的处理:创建于主线程并从属于主线程的 Handler ,在子线程...

  • 从源码的角度分析子线程和主线程中使用Handler的区别

    1、子线程与主线程之间使用Handler 2、子线程与子线程之间使用Handler 注意:这两个线程:thread...

  • Android消息机制学后感之到底是个啥

    handler是个啥 线程和线程间通信的处理实体,包括主线程和子线程、子线程和子线程。发送消息呢就相当于你在京东下...

  • handler post 线程

    在子线程中得到UI线程的handler对象 了解handler机制的小伙伴都知道,handler对象是哪个线程的它...

  • Handler消息传递机制

    一、Handler消息传递机制和深入认识(在一个线程中,可以有多个Handler?): (一)、引入: 子线程没有...

  • Handler 源码解读

    首先定义三个个Hander,一个在主线程的Handler,两个个在子线程的Handler 在主线程的Handler...

  • Handler在主线程和子线程

    handler用来处理一些费时的操作,数据查询,连接网络等。handler的机制:handler包含handler...

网友评论

      本文标题:Handler在主线程和子线程

      本文链接:https://www.haomeiwen.com/subject/tummkftx.html