2011-11-18 131 views
1

我有一個包含100個或更多按鈕的大型活動。但是一旦加載就可以正常工作。然而問題在於加載。從點擊啓動圖標到獲得第一個視圖需要10-12秒。直到第一個視圖,它在黑色背景中顯示灰色標題欄。setContentView花費很長時間(10-15秒)執行

至少,我想在加載時顯示一個簡單的進度條或對話框。但似乎你不能在setContentView執行之前顯示任何東西。我想我已經竭盡所能地嘗試了一切。如果你能給我任何暗示或想法,我會感激。

UPDATE:

我發現了一個戲劇性的分辨率。現在需要一秒加載視圖。我根本沒有使用splash,線程或異步任務 - 順便說一句,不要嘗試在UI上使用線程或異步,因爲Android UI不是線程安全的。問題是這些按鈕是基於一個自定義類,需要初始化才能加載相同的資源。 - 在setContentView上發生了100個或更多的文件操作。讓他們成爲一個單一的裝載解決了我的問題。

+0

你試過ProgressDialog嗎? –

+0

你是否動態加載你的按鈕,或者你有100個定義在XML中的按鈕? –

+0

@Paul:你可以用Java加載它們嗎? –

回答

1

您正在同一UI線程中加載數據,因此在加載期間不會顯示任何內容。 使用Async Task在單獨的線程中加載。

1)顯示進度條onPreExecute() 2)加載數據在doInBackground()。沒有UI相關的東西在這裏 3)更新UI上的更改,隱藏進度條onPostExecute()

+0

請分享代碼。 –

0

在調用setContentView()之前使用此代碼。也許它有幫助。

requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); 
requestWindowFeature(Window.FEATURE_PROGRESS); 

setProgressBarIndeterminateVisibility(true); 
setProgressBarVisibility(true);