2011-09-27 60 views
2

我建立一個Android應用程序。它解析存儲在數據庫中的訂閱源。應用程序的每個活動都可以從數據庫中獲取這些數據。所有活動的一個裝載機

每個活動也可以調用服務,並使其刷新數據。完成後,我想顯示一個加載器。在下載服務時,用戶仍然可以在活動之間進行導航。我的問題是;我如何顯示一個在用戶導航到的所有活動中運行的加載器?

感謝很多:)

+0

是否要在每個活動中指明加載,以及服務何時完成加載,您希望顯示用戶當前所進行的任何活動的獨立結果?我是否正確? – Knickedi

+0

結果很簡單。我只會從服務中發送廣播。服務完成後,我只想隱藏加載程序。 – johan

+0

這是我的問題的答案還是你解決了你的問題?我很困惑... – Knickedi

回答

0

這裏就是我會努力去做,因爲它似乎是一種不常見的任務,對我說:

我會嘗試建立一個半透明PopupWindow其中包含一個進度指示器。我會觸發/關閉這個彈出窗口顯示/或不只要有需要,指示加載進度...

+0

感謝您的提示。我想擴展應用程序和存儲布爾值(如下載)。然後我爲每個活動提供一個旋轉加載器,只要布爾值爲真就顯示。你怎麼看? – johan

+0

這可能也不錯。這意味着每一個活動都應該包含該微調器的佈局,檢查每個簡歷上的標誌,並且還要聽取加載的取消事件。這似乎不是對我的全球解決方案,它有點混亂,但它肯定會做這項工作;-) – Knickedi

0

你可以嘗試這樣的:

  • 將在所有「全球裝載機視圖」你的活動。
  • 當你開始/返回活動,觸發一個的AsyncTask將被用來處理全球裝載機
  • 覆蓋onPreExecute()的更新,以備全球裝載機(例如它的狀態設置爲當前的水平,如果該服務已被下載了一會兒)
  • 覆蓋onProgressUpdate(),並用它通過詢問服務的當前狀態(負載百分比或東西)來更新全球裝載機的狀態
  • doInBackground您實現:

    while(service.isLoading()) { 
        publishProgress(service.getLoadPercentage()) 
        // Maybe add a Thread.sleep() here. 
    } 
    
  • 覆蓋onPostExecute將全局加載器的可見性設置爲View.GONE。

如果用戶在加載尚未完成時切換遠離活動,則可能需要實施一種殺死AsyncTask的方法。

相關問題