Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 中級開發 >> Android Activity與Thread之間的通訊

Android Activity與Thread之間的通訊

編輯:中級開發

在android中要讓Activity與Thread進行通訊 其實很簡單。
重點就在於android .os.Handler、Java.lang.Thread以及android.os.Message這三個類的整合應用 
我們在Thread中可以通過Message來通知Handler,Handler在這裡扮演著聯系Acitivity與Thread之間的角色。


首先在Acitivity中我們要定義 一個常量來作為判斷標示

private static final int GUINOTIFIER = 0x1234; 
復制代碼 
然後定義一些例子 裡面需要的屬性

public Calendar mCalendar; 
public int mMinutes; 
public int mHour; 
public Handler mHandler; 
private Thread mClockThread; 
復制代碼 
接著我們通過Handler來接收Thread所傳遞的信息

mHandler = new Handler() { 
            public void handleMessage(Message msg) { 
                switch (msg.what) { 
                    case TestHandler.GUINOTIFIER://TestHandler是Activity的類名 
                        //得到Handle的通知了 這個時候你可以做相應的操作,本例是使用TextVIEw 來顯示時間
                        mTextVIEw .setText(mHour + " : " + mMinutes); 
                        break; 
                } 
                super.handleMessage(msg); 
            } 
        }; 
復制代碼 
接下來我們自定義一個Thread

class LooperThread extends Thread { 
        public void run() { 
            super.run(); 
            try { 
                do {//每間隔一秒取一次系統 時間 
                    long time = System.currentTimeMillis(); 
                    final Calendar mCalendar = Calendar.getInstance(); 
                    mCalendar.setTimeInMillis(time); 
                    mHour = mCalendar.get(Calendar.HOUR); 
                    mMinutes = mCalendar.get(Calendar.MINUTE); 
                    Thread.sleep(1000); 
                    //取得系統時間後發送消息給Handler 
                    Message m = new Message(); 
                    m.what = Ex04_14.GUINOTIFIER; 
                    Ex04_14.this.mHandler.sendMessage(m); 
                } while (!LooperThread.interrupted());//當系統發出終端命令時停止循環 
            } catch (InterruptedException e) { 
                e.printStackTrace(); 
            } 
        } 
    } 
復制代碼 
最後我們啟動線程

mClockThread = new LooperThread(); 
mClockThread.start(); 
復制代碼 
利用上面的例子我們可以擴展更多的應用,比如使用Thread進行上傳下載 操作,完成後通知主Activity等等

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved