0

我有一個ViewPager和一些片段的活動。改善活動開始時間(AsyncTask?)

問題:由於ViewPager是在onResume方法中創建的,因此需要很長時間才能開始活動。由於數據庫請求2-3秒。

我以爲我可以在onResume中啓動一個AsyncTask,並在那裏做繁重的工作。但開始活動的時間不會減少。

如果我在視圖中放置一個按鈕,並在onClick中的工作一切工作正常。該活動開始非常快,點擊後開始繁重的工作。

一些代碼來想一想:

的執行的AsyncTask

private class LoadTask extends AsyncTask<Void, Integer, Boolean>{ 

     @Override 
     protected Boolean doInBackground(Void... params) { 
      PageAdapter mPageAdapter = new PageAdapter(
        getSupportFragmentManager(), mFragments); 
      mViewPager.setAdapter(mPageAdapter); 

      return true; 
     } 

    } 

任務中的onResume

@Override 
    protected void onResume() { 
     super.onResume(); 

     LoadTask task = new LoadTask(); 
     task.execute(); 
    } 

該解決方案被稱爲沒有改善活動的開始時間。

有沒有辦法開始活動,並在充氣和顯示一切(進度欄...)後執行繁重的任務?

回答

0

您需要做的是設置視圖尋呼機並在創建活動時將其鏈接到適配器。然後,將內容填充到任何集合中,以便在異步任務中備份適配器,並通知視圖數據集已更改。該視圖在創建之前無法顯示,並且您已將適配器的註冊移至異步任務,因此您不會注意到區別。我們的目標是讓您的應用程序在啓動時顯示一些視圖,並在數據可用時填寫數據(如您可能知道的那樣)。

+0

ViewPager在開始時是空的。它是在XML中創建的。但我看不到它。通過將PageAdapter設置到ViewPager中,ViewPager充滿了內容。這在asynctask中異常地發生。但是,在asynctask結束之後,整個活力就會顯示出來。我不清楚爲什麼在asyncTask正在做事情時沒有繪製Activity。 – passsy 2012-07-24 01:11:24

+0

所以你是說如果你完全註釋掉異步任務,它會按預期工作(快速加載)減去正在填充合法數據的尋呼機?那麼我們可能需要更多的代碼。另外,您要加載多少數據以及您正在測試的系統的規格是什麼? – dcow 2012-07-24 03:55:19