2010-06-03 140 views
2

我有一個關於postDelayed的問題。 android文檔說它將runnable添加到隊列中,並在UI線程中運行。這是什麼意思?Android - postDelayed和線程問題

因此,例如,我用來創建我的佈局的同一個線程用於運行Runnable?

如果我希望它作爲一個獨立的線程執行,而我正在創建我的佈局並定義我的活動,該怎麼辦?

感謝 克里斯

回答

1

恭喜!你找到了一個解決方案不止一個的地方。

  1. 處理程序和PostDelayed可以是定期調用前臺活動的很好的輕量級方法。即使這些消息被重用。這些用於Snake示例程序(Snake/SnakeView.java/sleep())以使蛇移動。它以'發送消息延遲500ms'的方式運行,在500毫秒內將其捕獲到HandleMessage(處理程序的默認值),移動,然後再發送它。即使這個消息是通過acquireMessage()重用的。我已經使用這些按鈕進行按鈕更新,同時按下它。

  2. 線程稍重。您可以將這些用於背景或已經用於運行線程的位置。製作一個'新線程(aRunnable).start()'。我沒有在Android上使用過它們。

  3. 使用StartActivityForResult()啓動Intent,並使用OnActivityResult捕獲結果以生成標準RPC。請參閱記事本示例的第2步以獲取更多信息。

  4. 調查更多的意圖啓動不同的場景。我發現把你的'創建和啓動意圖'分成不同的功能有助於維護和調試。

祝你好運!

3

是將在UI線程上運行。

如果你想運行一個後臺線程,然後按照正常的方式。

Thread t = new Thread(new Runnable(){}); 
t.start() 

但是如果你想在所有的改變反應的東西,一個後臺線程可能會做的UI,那麼你可以使用postDelayed()。

對UI的任何更改都必須在主UI線程上完成。