Android 中Handler 快速使用

Android 中Handler的初步使用

在Android 中要渲染UI就必须在主线程中,而常常耗时操作却又不得不开子线程,子线程中不能渲染UI,所以有了handler,handler在主线程中是一个类似协程一样的东西,在保持一个死循环轮询,当没有消息时处于一个阻塞状态,有消息时就回调收到消息时的函数。所以可以把子线程中的消息传递给 handler 由handler在主线程中来改变UI。

快速使用:

    int num=0;
        
        final Handler handler = new Handler (){
            @Override
            public void handleMessage(Message msg) {
                //收到消息后的回调函数
                super.handleMessage (msg);
//                Log.d (TAG, "handleMessage: "+msg.what);
                if(msg.what==1001){
                    tv1.setText(num+"");//改ui
                }

            }
        };
//子线程中发消息
        new Thread() {
            public void run()
            {
                while (true){
                    try {
                        Thread.sleep(1);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    num+=1;
                    handler.sendEmptyMessage (1001);
                }
            }
        }.start();


    

以上就可以快速使用,但只能修改为预设的num。

下面可以传递字符串消息:

Android Handler Message 传递字符串:

msg.what:

private   static   final   int  NETUPDATE =  10 ;

Handler接收部分:

private  Handler mHandler =  new  Handler()
{
    @Override
     public   void  handleMessage(Message msg)
    {
         switch  (msg.what)
        {

         case  NETUPDATE:
            parseIni(( String ) msg.obj);
             break ;

        }

发送部分:

Message tempMsg = mHandler.obtainMessage();
tempMsg.what = NETUPDATE;
tempMsg.obj = buffer.toString();
mHandler.sendMessage(tempMsg);

 

posted @ 2020-09-25 18:01  sunny开始学坏  阅读(624)  评论(0编辑  收藏  举报