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);

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM