因此,我一直在研究一個應用程序,該應用程序具有包含多個不同輸入和輸出的Plan模型,並且該應用程序的佈局具有用於輸入和標籤的滑塊控件輸出。當輸入發生變化時,它會更新模型,然後運行計算,然後更新視圖。起初我並不認爲這個架構有什麼問題,但即使是簡單的計算似乎也運行得非常慢,阻塞了UI線程。當然,我也有更新的東西有點複雜的方式:使用SeekBar更新Android佈局中的計算值
- 滑塊(在一個ViewGroup子類)更新它的價值和將消息發送到一個委託(它實現特定於該子類的ViewGroup接口)。
- 委託(包含模型和控制子視圖)告訴Plan實例設置一個新值,這會觸發計劃重新計算其輸出。
- 計劃完成計算後,它會向代理髮送另一條消息,然後告知其輸出視圖以使用新值進行更新。
我已經將此架構建模爲我開發的iOS應用程序,這似乎並沒有像運行計算時那樣大的問題。
現在,我知道Android與iOS顯着不同,所以我想知道我是否會完全錯誤。有沒有辦法告訴這些視圖觀看計劃模型的變化,然後獲取它應該顯示的值?
我在這裏看到的另一個主要問題是滑塊輸入。如果我將模型更新計算放入一個線程中,則每次滑塊更改時都會創建一個新線程。這些線程(正如我所看到的)或多或少都會按隨機順序完成,當您應該看到增量更改時,以這種方式更新視圖的方式也沒什麼意義。是否有一種線程計算的好方法可以通過seekbar進行修改?
爲了真正瞭解是什麼導致了性能問題,我建議在Eclipse中使用DDMS中的分配跟蹤器:http://developer.android.com/guide/developing/debugging/ddms.html。關於我的頭頂,聽起來像你需要使用具有遊戲循環的SurfaceView來更新視圖。 – Vigrond