2010-12-06 6 views
4

Lorsque mon activité principale démarre après l'écran de démarrage, elle analyse 4 gros fichiers XML. Cela prend quelques secondes et je suis capable de cacher cela dans le temps que l'écran de démarrage montre au démarrage.L'activité se recharge lorsque l'orientation change dans Android

Mais quand l'orientation de l'écran change ou quand je retourne à l'activité principale après une sous-activité, elle effectue une nouvelle analyse et donc mon application "pend" pendant quelques secondes et elle ne répond pas ou quoi que ce soit pendant ce temps .

Je comprends que c'est un comportement normal sous Android, mais n'y at-il pas un moyen d'éviter cela?

Je lis quelque chose savedinstancestate, mais je ne peux pas l'air de comprendre les docs ..

Répondre

12

Ajoutez ce code dans votre fichier manifeste Android dans chaque nœud d'activité si vous ciblez le niveau d'API 12 ou moins.

android:configChanges="orientation|keyboardHidden" 

Pour le niveau 13 et au-delà, vous devez aussi inclure "screensize", i.e. .:

android:configChanges="orientation|keyboardHidden|screenSize" 

coller ce code maintenant dans les classes Java de toutes vos activités.

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 

    // Checks the orientation of the screen 
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
     Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show(); 
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){ 
     Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show(); 
    } 
    // Checks whether a hardware keyboard is available 
    if (newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO) { 
     Toast.makeText(this, "keyboard visible", Toast.LENGTH_SHORT).show(); 
    } else if (newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_YES) { 
     Toast.makeText(this, "keyboard hidden", Toast.LENGTH_SHORT).show(); 
    } 
} 
+0

Merci beaucoup! Cela marche :) – Galip

3

Vous pouvez empêcher cela en ajoutant android: configChanges = "orientation" à votre activité dans le fichier AndroidManifest.