因此,我正在編寫一個應用程序,並且有幾個關於如何處理AsyncTasks的問題。 我儘可能詳細地描述我的問題。我有以下類:正確使用AsyncTasks並處理視圖和活動所需的對象
- MainActivity - 此活動僅執行
setContentView(R.layout.myLayout)
和 創建我的CustomLocationListener的對象。版式包含自定義視圖和ProgressBar
。 - CustomLocationListener - 這基本上只是一個類實現
LocationListener
和具有默認LocationListener
方法。除此之外,我還編寫了一種方法來檢查哪些提供者可以使用NETWORK_PROVIDER
。 - 顯示器 - 這只是一個輔助班。我只用它來獲得顯示度量來計算一些事情。
- MyCustomView - 該課程擴展了
View
類。它也有Display
類型的屬性(我自己的類)。
現在你應該知道對我的代碼重要的一切。好了,現在我的問題是,如何處理AsyncTasks,因爲這是該步驟的應用程序應該通過:
- 獲取用戶設備的當前位置
- 執行一些查詢數據庫服務器(MySQL的),並將它們保存非持久(數據由城市名)
- 計算用戶的位置,並在數據庫中的城市之間的距離
- 做一些其他的計算,以找出位置在哪裏畫在屏幕上
- 吸取一切
最重要的是,我想實現一個進度條,它應該是活動的,直到所有的計算都完成並且繪圖階段開始。 所以,我有點困惑在哪裏編碼什麼。我的意思是,兩個計算(步驟3和4)必須相互瞭解。第4步的計算需要第3步的計算結果。我的Activity類也應該知道計算的狀態,因爲我必須在開始繪製時使ProgressBar不可見。
我希望我已經足夠詳細了,感謝您的幫助!
我可以在Activity類中執行所有需要的線程,在完成所有計算後,我可以使ProgressBar不可見。但是我怎麼才能開始畫畫?我的意思是,當我打開活動時,onDraw()立即啓動。如果計算完成,我可以使用If-Else-Block檢查布爾值。但是,我怎麼能在視圖類外的線程中使視圖無效? – Lyte