2011-02-17 2 views
0

Que dois-je faire lorsque mes paramètres Activity démarrent vraiment lentement? Parfois, je reçois ANR keyDispatch error si cela prend trop de temps. Doit également dire que j'utilise PreferenceActivity. La première fois que je vais dans les réglages, le temps de retard est vraiment lent (environ 5-10 secondes), mais sinon, il va super lisse. Cela apparaît lorsque je réinstalle l'application et que je recommence les réglages pour la première fois (donc c'est une première fois).Démarrage lent de la deuxième activité

code dans mes paramètres 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... 

Fondamentalement, je veux savoir où cette erreur se trouve, la question est de savoir comment? Est-ce que je peux voir dans LogCat QU'EST-ce qui cause le retard?

Merci pour toute réponse!

+0

J'ai rencontré le même problème, je pense que le problème est avec le style que vous avez donné à votre activité dans le fichier manifest.xml. S'il vous plaît poster ce fichier, si vous avez choisi un thème spécial, il pourrait en prendre un certain nombre à charger complètement. – Bush

Répondre

1

Avez-vous essayé d'exécuter le TraceView pour mesurer exactement ce qui prend si longtemps? Cela vous guidera dans la bonne direction. C'est très facile à utiliser depuis Eclipse. Dans la vue DDMS, il y a un bouton pour commencer à utiliser TraceView.

+0

Merci, va regarder cela – Curtain

1

Vous ne pouvez pas voir les retards dans Logcat aussi loin que vous ne les consignez pas vous-même. dans l'exemple:

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

En fait, logcat nous dire combien de temps cela prend. Par exemple: 344-384 /? I/ActivityManager: affiché pck.example.MyActivity: + 1s982ms – alicanbatur

Questions connexes