2010-09-23 25 views
0

我有點新的程序,功能mvc架構,我想正確的想法前面...如何在android上獲取mvc?

我有這個(android)應用程序,其中一個線程(從UI線程分開)計算一些數據。完成後,結果將寫入對象的成員。現在:我如何獲得UI線程以「實現」已經有更新(即,UI線程必須重做屏幕輸出)。

最明顯的方法 - 在UI線程中運行無限循環,檢查每個循環中是否存在更新 - 是非常蹩腳的。那麼我該如何做到「正確」?

  • 我應該使用一個處理程序,每次有新數據可用時都由計算線程調用它。這個處理程序會觸發一個重繪UI的函數。

  • 我應該使用wait()和notify()讓UI線程知道有新數據可用的事實嗎?

我在這裏有點失落。雖然我知道這些概念的基本知識,我不知道哪一個是「最好」的一個用在這裏...

編輯:澄清:

我有一個類A(它是一個機器人活動)和一個由A實例化的類B.這個類B有一個成員變量X並且運行一個線程,它計算X的值。當線程完成時,它發送一個消息(帶有計算值)給一個處理程序B.此處理程序現在設置X. 的值:由於B不存儲A的引用,因此我如何「通知」A X的值已發生變化?我是否發送另一個被A類中的處理程序「捕獲」的消息對象?

回答

1

使用處理程序,並讓後臺線程在更新可用時通知UI線程。

不要用循環或等待來阻止UI線程。這將使您的用戶界面無響應,並讓你的應用程序死亡。

1

...你的問題似乎是關於線程管理及其設計比關於mvc更多。

然後你不應該使用類線程或接口runnable而是AsyncTask。它使得更新UI和設計業務邏輯變得更容易。 AsyncTask的目標是爲您管理線程管理。

看看android開發者博客。 Painless threading

相關問題