2014年4月1日 星期二

【Android】Handler.post(Runnable run) 讓這個Runnable跑久一點

標題是個Android的API。

簡單來說,Handler可以允許使用者輸入一個Runnable,並執行這個Runnable的內容。

所以.......用Handler來啟動Thread/Runnable不是也不錯嗎?



如果你曾經有過這個念頭,表示你跟我一樣蠢。

因為Handler會導向主線程,所以Handler啟動了這個Runnable後,MainThread/UIThread就被占住了。(有趣的是,如果在Runnable中直接寫入操作UI的相關指令/程式碼,系統不會擋下這個Runnable。但直接使用Thread來啟動這個Runnable,第一時間就被系統攔阻下來。)

這個APP不會對使用者的任何操作產生反應,連關都關不掉,最後是等系統通知「此APP無回應」,才順利關閉。



========================================



反向思考一下,其實Runnable並不等於Thread!

它只是種接口,而且不是Thread獨佔使用。

Handler.post這個用法應該不是另外開啟一個Thread,而是將Runnable的內容差入Main Thread中執行。

能幹嘛........參透中,真的不能理解這樣做跟實作一個有獨特功能的Handler的差異。終究只是今日一個無聊實驗的無聊結果。


沒有留言:

張貼留言