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