Pages

2011年11月15日 星期二

Thread & Handler

   如果在某個 Activity/Service/Class 中使用執行緒,然後,需透過該執行緒來變更/通知某個事件,就可以使用 Handler。##ReadMore##
private static final int LIGHTSENSOR_LUX = 0x101;   // 自訂常數

Thread t = new Thread() {
    public void run() {
        while (true) {
            int getLuxValue = 0;

            Message msg = new Message();
            msg.what = LIGHTSENSOR_LUX;
            msg.arg1 = getLuxValue;
            handler.sendMessage(msg); 

            try {   
               Thread.sleep(500);    
            } catch (InterruptedException e) {   
               Thread.currentThread().interrupt();   
            }
        }
    }
};
t.start();

private Handler handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        switch (msg.what) {   
        case LIGHTSENSOR_LUX:
            Log.e("Test", "Lux Value = "+msg.arg1);
            break; 
    }   
    super.handleMessage(msg);
}

   Message 提供三個公開變數可以傳資料:arg1、arg2 是傳整數,obj 是傳 object type 資料;還有 setData(Bundle) 可以使用,但還沒用過。

參考網址

  • 利用 Handler 來更新 Android UI .. (Link)
  • Andorid Developer Messge .. (Link)
  • Andorid Developer Handler .. (Link)
  • Why isn't the thread stopping .. (Link)
  • 背景執行服務(Service) .. (Link)

沒有留言:

 
Blogger Templates