標題是個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的差異。終究只是今日一個無聊實驗的無聊結果。
簡單來說,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的差異。終究只是今日一個無聊實驗的無聊結果。
沒有留言:
張貼留言