2012-02-11 34 views
7

我有一個使用選項卡的活動,並且選項卡切換片段。問題是Fragment在創建時需要幾秒鐘才能加載,因此切換標籤的延遲時間大約爲1或2秒。爲了解決這個問題,我一直在試圖找到一種方法來顯示一個簡單的加載圖形,甚至是一個進度對話框,以便該選項卡立即改變,並顯示一些東西指示事情正在加載,直到一切完成。更改選項卡是緩慢/滯後 - 使用片段

onCreateView片段的方法是這樣的:

FrameLayout fl; 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    fl = (FrameLayout) inflater.inflate(R.layout.text_layout, container, false); 

    doHeavyStuff(); 

    return fl; 
} 

我試圖把doHeavyStuff()onStart()但沒有什麼幫助。而線程不會幫助,因爲doHeavyStuff()涉及操縱視圖/ GUI。

關於如何顯示片段並顯示「加載」信息的任何想法其他所有加載?

謝謝!

Matt。

回答

8

onActivityCreated()

  • 啓動progress bar(或任何顯示進度UI元素/秒)。
  • 執行下面說明的HeavyStuffDoingAsyncTask

HeavyStuffDoingAsyncTask應具備:

  • doHeayStuff()的哪個不會在doInBackground方法更新UI邏輯。
  • 每次你想要更新UI時,請致電publishProgress()doInBackground()
  • 實施onProgressUpdate方法中的UI更新邏輯。
  • 停止onPostExecute方法中的進度條。

好運。

+0

我只充氣鑑於onCreateView(),並且也laggy。那麼我應該如何改變像上面那樣的膨脹代碼以獲得更好的性能? – Husyn 2013-12-02 17:55:42

+0

你是否在做任何事情,而不僅僅是膨脹視圖?像填充視圖等。如果是這樣,你應該在onCreateView()之外完成填充部分以避免laggy行爲。 – 500865 2013-12-02 19:44:47

+0

不,我只是誇大了看法。 return inflater.inflate(R.layout.setting_list_layout,container,false);是onCreateView()中的唯一行; – Husyn 2013-12-03 06:49:38

0

嘗試設置

pager.setOffscreenPageLimit(no_of_fragments or pages); 
相關問題