美文网首页
Handler使用

Handler使用

作者: Summer_27d1 | 来源:发表于2018-07-02 16:23 被阅读0次

    主要用于异步处理: 存在于线程中
    开启子线程:异步处理


    image.png image.png

    主要接受子线程发送的数据,并用此数据配合主线程更新UI

    ···
    //1.创建Handler对象
    private Handler handler=new Handler(){
    //2.重写handleMessage
    public void handleMessage(android.os.Message msg) {
    5.获取消息:
    String data= msg.obj;
    Toast.makeText(getApplicationContext(), data, 1).show();
    tv.setText("这是Hander")
    }
    };


    在子线程:
    String s='你好';
    3.创建消息对象
    Messge message = new Message();
    message.obj=data;
    message.what=10086; //消息编号

    4.发送消息
    mHandler.sendMessage(message);

    ···
    ---------------------handler--------------------
    ···
    switch (msg.what) {
    case 10086:
    String data2=(String) msg.obj;
    tv.setText(data2);
    break;
    case 10087:
    Integer data3=(Integer) msg.obj;
    tv.setText(data3+"");
    break;

        default:
            break;
        }
    

    ···
    ··················子线程···························
    ···
    new Thread(new Runnable() {

        @Override
        public void run() {
            try {
    

    //
    Thread.sleep(3000);

                String data="你好";
                //4.创建Message
                Message message = new Message();
                message.obj=data;
                message.what=10086;//编号
                //3.发送消息
                handler.sendMessage(message);
                handler.sendEmptyMessage(10086);
                handler.sendMessageDelayed(message, 2000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }           
        }
    }).start();
    int data=12542;//主线程 先显示
    Message message = new Message();
    message.obj=data;
    message.what=10087;
    

    // //3.发送消息
    handler.sendMessage(message);

    ···
    *****************Handler****开启子线程***************************
    private Handler handler=new Handler(){
    public void handleMessage(android.os.Message msg) {
    // //2.重写handleMessage
    // //获取消息

        switch (msg.what) {
        case 10086:
            String data2=(String) msg.obj;
            tv.setText(data2);
            break;
        case 10087:
    new Thread(new Runnable() {
        
        @Override
        public void run() {
        try {
            Thread.sleep(3000);
            
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
            
            
        }
    }).start();
            Integer data3=(Integer) msg.obj;
            tv.setText(data3+"");
            break;
    
        default:
            break;
        }
    };
    

    };

    相关文章

      网友评论

          本文标题:Handler使用

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