2016-04-28 71 views
0

線程處理中的looper和while循環有什麼區別? 我想這個代碼和它的作品就像我用尺蠖處理程序:線程處理中的looper和while循環有什麼區別?

public abstract class han { 
public abstract void handleMessage(Message message); 
public void sendMessage(Message message) 
{ 
    handleMessage(message); 
} 
} 

然後:

   while (0 == 0) { 
       h = new han() { 
        @Override 
        public void handleMessage(Message message) { 
         Toast.makeText(thr.this, "mm", Toast.LENGTH_SHORT).show(); 
        } 
       }; 

實際上,「漢書」就像處理程序的一類,但因爲處理程序錯誤沒有活套,我做了一個特殊的課,叫做「漢」。和「h」是一個全局變量

+1

你想要製造大量的漢族實例嗎? –

+0

你的答案在下一個答案 –

+0

android中的looper的任務是從消息隊列中檢索消息並確保消息在正確的處理程序上處理。如果消息隊列中沒有消息,它將阻塞並等待傳入​​的消息。 ** android.os.Looper **中存在方便的循環類。 **另一方面,雖然循環**,可能無法通過智能來確定在正確的處理程序和線程上執行 – Sanny

回答

0

簡而言之,looper是一個便利的類,它運行在一個線程中。 從文檔:http://developer.android.com/reference/android/os/Looper.html

「用於爲線程運行消息循環的類」。所以它所說的是,一個活套可以讓你發送消息給實例化的線程。我現在假設,但我不認爲它會耗盡資源,直到它收到消息,可能通過循環內的智能同步/等待組合。

現在,您的while循環將無限期地運行,並且非常頻繁地創建新的han對象。您應該看到垃圾收集器運行以收集這些對象。但是,是的,你的代碼應該可以工作,並且你應該能夠接收消息,但是需要很高的資源成本。 (如果你沒有在一個while循環中運行,你的線程將會完成並且什麼都不會發生,這就是活套可以防止的事情。)

+0

確定,但是我可以從漢字中移除抽象標籤(但仍然覆蓋handleMessage),並定義實例在循環之前,然後只處理循環中的消息。 –

+0

沒有正文答案? –

相關問題