2011-02-17 137 views
0

當我的設置Activity啓動時真的很慢,我該看什麼?如果需要很長時間,我有時會得到ANR keyDispatch error第二次活動緩慢啓動

還應該說我正在使用PreferenceActivity。絕對第一次進入設置延遲時間非常慢(約5-10秒),但否則它會非常流暢。這在我重新安裝應用程序並第一次啓動設置時會出現(所以這是第一次)。

一些代碼在我的設置PreferenceActivity

@Override 
protected void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 

    pref = getPreferenceManager();  

    pref.setSharedPreferencesName(LiveWallpaper.PREFERENCES); 
    addPreferencesFromResource(R.xml.live); 
    pref.getSharedPreferences().registerOnSharedPreferenceChangeListener(this); 

    pref.findPreference("Username").setOnPreferenceClickListener(new OnPreferenceClickListener() {   
     public boolean onPreferenceClick(Preference preference) { 
              // Stuff... 
       return true;     
      } 
     } 
    ); 
// And so on... 

基本上,我想找出這個錯誤所在,問題是如何?我可以在LogCat中看到什麼是導致延遲的原因?

感謝您的任何答案!

+0

我遇到了同樣的問題, 我認爲這個問題是你給你的活動在manifest.xml文件的樣式。 請張貼該文件,如果您選擇了一個特殊的主題,它可能需要一些完全加載。 – Bush 2012-01-25 13:49:19

回答

1

您是否試過運行TraceView來準確衡量所花費的時間如此之長?這將引導你朝着正確的方向前進。在Eclipse中使用起來非常簡單。在DDMS視圖中有一個按鈕可以開始使用TraceView。

+0

謝謝,看看吧 – Curtain 2011-02-17 20:22:31

1

只要你不記錄它們,你就看不到Logcat中的延遲。 例如:

long start; 
long stop; 

start = System.getCurrentTimeMillis(); 
pref = getPreferenceManager(); 
stop = System.getCurrentTimeMillis(); 
Log.d("Manager: ", "Time" + (stop - start)); 

start = System.getCurrentTimeMillis(); 
pref.setSharedPreferencesName(LiveWallpaper.PREFERENCES); 
stop = System.getCurrentTimeMillis(); 
Log.d("SetSharedPrefs: ", "Time" + (stop - start)); 
+0

實際上,logcat告訴我們需要多長時間。例如: 344-384 /?我/ ActivityManager:顯示pck.example.MyActivity:+ 1s982ms – alicanbatur 2014-04-15 10:20:24