J'ai collé ensemble une application de test simple dotée d'un bouton et qui émet un bruit lorsque l'utilisateur clique dessus. Voici c'est la méthode:Cycle de vie de l'application et méthode onCreate dans l'android sdk
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button b = (Button)findViewById(R.id.easy);
b.setOnClickListener(this);
}
public void onClick(View v) {
MediaPlayer mp = MediaPlayer.create(this, R.raw.easy);
mp.start();
while(true) {
if (!mp.isPlaying()) {
mp.release();
break;
}
}
}
Ma question est, pourquoi agit comme onCreate il est dans une boucle while? Je peux cliquer sur le bouton à chaque fois, et ça fait du bruit. Je pourrais penser que c'était juste une propriété des écouteurs, mais l'objet de bouton n'était pas une variable de membre. Je pensais qu'Android ne ferait que passer par onCreate et passer à la prochaine méthode de cycle de vie.
Aussi, je sais que ma façon actuelle de voir si le son joue est de la merde ... J'y reviendrai plus tard. :)
Merci.
Ce n'est pas que « vous n'avez pas besoin d'une boucle while » - ayant cette boucle while va attacher le thread principal de l'application, le gel de votre interface utilisateur, et éventuellement la cause Android pour tuer votre activité. – CommonsWare
Ah, merci pour la méthode. :) De toute façon, vous dites que j'ai supprimé le pointeur, mais pas l'objet lui-même, et parce que l'interface utilisateur conserve une référence au bouton, la JVM (ou ce que nous appelons la version android de la JVM), autour de. Si c'est le cas, cela signifie que le bouton va durer jusqu'à la fermeture de l'application, ou juste jusqu'à ce que l'activité se termine (ou qu'elle disparaisse de l'écran)? Merci encore. –
Cela signifie simplement, ne pensez pas à la durée de vie de votre bouton comme étant la même que la durée de vie d'une variable qui pointe vers elle. Les mécanismes dans le cadre Android qui a construit votre interface utilisateur (dans ce cas, créer un graphique d'objet à partir d'un fichier XML que vous avez créé et l'afficher à l'écran) contrôlent le cycle de vie des objets qu'il crée. Dans ce cas, l'activité le possède et j'imagine que c'est dans la portée seulement tant qu'elle est visible. De même, votre objet écouteur est dans la portée tant qu'il y a une référence à celui-ci. – Rich