2011-12-19 57 views
0

如何在我的應用程序啓動後立即開始爲我的活動加載數據?目前,我已經設置好在主屏幕啓動後立即下載所需的信息 - 這是用戶必須登錄的地方。根據連接速度和用戶登錄的速度,數據可能不會被加載,並且在活動啓動時會導致問題,因爲數據尚未加載。 (spinner將不會有任何數據等)在應用程序啓動後儘快爲活動加載數據

我目前有兩個AsyncTask - 一個用於登錄,一個用於下載數據。一旦用戶離開屏幕,看起來好像AsyncTask停止。我試着把計時器等到boolean變量設置爲true從下載數據的任務,但似乎強制關閉應用程序。這裏有一個例子:

while (!settingsLoaded) { 
    SystemClock.sleep(1000); 
} 

當該下載數據的AsyncTask打onPostExecute,我設置settingsLoaded = true。我應該使用其他方式下載數據嗎?

注意 - 當應用程序啓動時,我的應用程序數據AsyncTasktask.execute();,並記錄在用戶的其他AsyncTask是掀起依賴每當用戶點擊「登錄」按鈕。

回答

0

現在,你不提是正裝什麼樣的數據 - 但是從你的方案的描述,我建議你在的區域做一些事情:

  1. 用戶啓動應用程序
  2. 的顯示登錄屏幕
  3. 用戶輸入名稱/密碼並點擊「登錄」
  4. AsyncTask處理登錄被觸發 - 同時顯示一個ProgressDialog
  5. 登錄任務完成 - 主活動啓動。
  6. 的數據加載的AsyncTask燒製 - 甲ProgressDialog示出在數據被加載
  7. 數據裝飾面,ProgressDialog dissappears並且用戶可以開始使用該應用。

什麼最有可能發生在你的情況是,登錄任務的數據加載任務之前完成。您目前的做法無法說明首先完成哪項任務。

如果你想開始加載數據的時候了,你能做到這一點使用Service並具有主要活動表現出ProgressDialog啓動時,如果Service沒有完成加載呢。

-1

在下載完成的異步任務之前,您不應該啓動需要不可用下載數據的活動。爲了更好的用戶體驗,您應該在進程對話框中顯示某種啓動畫面(下載...)以讓用戶瞭解未完成的後臺進程。

+0

如果可能的話,我希望數據(用於spinners)在後臺加載。我試圖讓用戶更容易,更快捷,並在需要之前預先加載信息。我已經有了多個其他地方,用戶必須等待,並有一個「下載..」對話框。 – Cody 2011-12-19 15:17:51

相關問題