編輯:關於Android編程
本課講的是如何實現一個Runnable,在一個獨立線程上運行Runnable.run()方法.Runnable對象執行特別操作有時叫作任務。
Thread和Runnable都是基礎的類,靠他們自己,能力有限。作為替代,Android有強大的基礎類,像HandlerThread,AsyncTask,IntentService。Thread和Runnable也是ThreadPoolExecutor的基礎類。這個類可以自動管理線程和任務隊列,甚至可以並行執行多線程。
定義一個實現Runnable接口的類
復制代碼 代碼如下:
public class PhotoDecodeRunnable implements Runnable {
...
@Override
public void run() {
/*
* Code you want to run on the thread goes here
*/
...
}
...
}
實現run()方法
Runnable.run()方法包含了要執行的代碼。通常,Runnable裡可以放任何東西。記住,Runnable不會在UI運行,所以不能直接修改UI對象屬性。與UI通訊,參考Communicate with the UI Thread
在run()方法的開始,調用 android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_BACKGROUND);設置線程的權重,android.os.Process.THREAD_PRIORITY_BACKGROUND比默認的權重要低,所以資源會優先分配給其他線程(UI線程)
你應該保存線程對象的引用,通過調用 Thread.currentThread()
復制代碼 代碼如下:
class PhotoDecodeRunnable implements Runnable {
...
/*
* Defines the code to run for this task.
*/
@Override
public void run() {
// Moves the current Thread into the background
android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_BACKGROUND);
...
/*
* Stores the current Thread in the PhotoTask instance,
* so that the instance
* can interrupt the Thread.
*/
mPhotoTask.setImageDecodeThread(Thread.currentThread());
...
}
...
}
整個布局將觸發的方法如下:點擊TextView1 時,執行循環一次後。最後方法將不再向下傳遞。直接交個 Activity執行04-28 16:22:09.509: I/S
Android控件監聽方面,用接口實現監聽是最好的,在Android 本身就提供了各種控件監聽接口,我們只要按照這樣實現,看起來代碼會很整潔。實現的效果也是很
網上很多關於Android事件分發機制的解釋,大多數描述的都不夠清晰,沒有吧來龍去脈搞清楚,本文將帶你從Touch事件產生到Touch事件被消費這一全過程作
github:https://github.com/zarics/ZrcListView先貼一個自己畫的ZrcListView的UML類圖(學習ing。。。)滾動的實現想