Android Handler的簡單使用

jopen 10年前發布 | 12K 次閱讀 Android開發 移動開發 Android Handler

 這一節講的是Android Handler的使用,在講Handler之前,我們先提個小問題,就是如何讓程序5秒鐘更新一下Title.

首先我們看一下習慣了Java編程的人,在不知道Handler的用法之前是怎么樣寫的程序,代碼如下所示:

    package com.android.tutor;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.os.Bundle;
public class HandlerDemo extends Activity {

    //title為setTitle方法提供變量,這里為了方便我設置成了int型    
    private int title = 0;    

    public void onCreate(Bundle savedInstanceState) {    
        super.onCreate(savedInstanceState);    
        setContentView(R.layout.main);    

        Timer timer = new Timer();    
        timer.scheduleAtFixedRate(new MyTask(), 1, 5000);    
    }    

    private class MyTask extends TimerTask{    
        @Override   
        public void run() {    
            setTitle("Welcome to Mr Wei's blog " + title);    
            title ++;    
        }       
    }    
}    </pre><a style="text-indent:0px;" title="派生到我的代碼片" href="/misc/goto?guid=4959551769275766690" target="_blank"></a></div>

</div> </div>

然而當我們執行程序,并不能達到我們預期的效果,所以Android 引進了Handler 這個特殊的類,可以說它是Runnable和Activity交互的橋梁

,所以我們只要在run方法中發送Message,而在Handler里,通過不同的Message執行不同的任務。

所以我們修改后的代碼如下:

    package com.android.tutor;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
public class HandlerDemo extends Activity {

    //title為setTitle方法提供變量,這里為了方便我設置成了int型    
    private int title = 0;    

    private Handler mHandler = new Handler(){    

        public void handleMessage(Message msg) {    
            switch (msg.what) {    
            case 1:    
                updateTitle();    
                break;    
            }    
        };    
    };    
    public void onCreate(Bundle savedInstanceState) {    
        super.onCreate(savedInstanceState);    
        setContentView(R.layout.main);    

        Timer timer = new Timer();    
        timer.scheduleAtFixedRate(new MyTask(), 1, 5000);    
    }    

    private class MyTask extends TimerTask{    
        @Override   
        public void run() {    
            Message message = new Message();    
            message.what = 1;    
            mHandler.sendMessage(message);    

        }       
    }    


    public void updateTitle(){    

        setTitle("Welcome to Mr Wei's blog " + title);    
        title ++;    
    }    
}    </pre> <div class="dp-highlighter bg_java">

</div> </div> 本文章適合初學者學習!

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!