編輯:中級開發
在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等等
可翻頁的產品細節屏幕為增強產品細節屏幕的可用性,我們定義了一個自定義視圖控制器(ProductScrollVIEwController 類)來支持用戶通過翻頁
簡介: 本文是共兩部分的系列文章 “android 和 iPhone 浏覽器之戰” 的第 2 部分,主要關注為 iPhone 和 Android 開發基於浏覽
簡介: 在這個由五個部分所組成的系列的第一部分中,您將接觸到移動 Web 應用程序中最流行的新技術:地理定位。高端智能手機都內置 GPS,現在您將了解 Web
簡介: 對於需要跨應用程序執行期間或生命期而維護重要信息的應用程序來說,能夠在移動設備上本地存儲數據是一種非常關鍵的功能。作為一名開發人員,您經常需要存儲諸如