2011-04-09 8 views
10

Je n'arrive pas à comprendre quand surfaceDestroyed() se produit. J'essaie de faire en sorte que mes threads s'arrêtent de fonctionner dans la méthode surfaceDestroyed() (d'un SurfaceView) mais il semble que ma surface n'est jamais réellement détruite ... quelqu'un peut-il me dire quand cela se produit? Ou comment le déclencher?Quand est-ce que surfaceDestroyed() se produit?

Répondre

18

Chaque fois que vous cliquez sur le bouton de retour ou à la maison et de laisser l'activité que vous obtenez:

Activité OnPause

surfaceDestroyed

et enfin l'activité onDestroyed. Lorsque vous revenez, la surface est recréée, mais si vous avez utilisé des variables statiques pour piloter l'application, elles seront souvent conservées et il semblera que surfaceView n'ait pas été détruit.

En ce qui concerne la fermeture du fil, vérifier: Android crash when app is closed and reopened

+0

Vous voyez, je pensais que c'était à chaque fois que vous reveniez. Cependant, j'essaie d'arrêter mes threads dans la méthode SurfaceDestroyed ..... mais ils continuent à fonctionner @. @ –

+1

Vous ne pouvez pas facilement arrêter les threads, arrêtez simplement la boucle dedans puis utilisez JOIN pour qu'ils finissent seuls et " rejoindre "le fil principal de l'interface utilisateur, puis vous pouvez fermer le fil de l'interface utilisateur correctement. Voir la méthode surfaceDestroyed dans le code de la question du lien que j'ai fourni. – Lumis

2

surfaceDestroyed() n'est pas appelé lorsque la vue est gérée par un TabHost.

Questions connexes