2010-08-17 6 views
0

J'ai un thread de jeu principal mais lorsque le score cible est atteint, j'ai une activité qui est lancée appelée StageCleared qui affiche essentiellement les statistiques à l'utilisateur de leur performance, puis ils peuvent appuyer sur un bouton continuer pour continuer le jeu. Cela devrait changer le focus sur le thread en cours d'exécution qui devrait continuer l'exécution, et ainsi afficher l'activité du jeu (avec les paramètres que je mets à jour après l'exécution de StageCleared).Mise en pause/reprise d'un thread de jeu Utilisation de wait() et notify() - Android

Il a été suggéré que j'utilise un paquet visible objet qui appelle wait() sur lui-même dans le thread de jeu principal, puis notifier() sur lui-même de StageCleared afin de continuer l'exécution. Mon premier problème est que je ne peux pas sembler déclarer un objet visible de paquet qui peut être vu par toutes les classes dans mon paquet? Deuxièmement, est-ce la meilleure façon de réaliser ce que j'ai l'intention de faire ou existe-t-il un meilleur moyen?

Un grand merci

Répondre

0

Pour activer visibile paquet, laissez le modificateur vide:

static boolean mVarname = true; 

mVarname est visible à l'intérieur du paquet.

Je travaille avec un drapeau d'exécution pour activer si la boucle devrait faire quelque chose ou juste "inactif". Moi aussi, je ne sais pas si c'est un bon moyen de le faire :)

+0

Merci, je pensais que c'était comme ça, mais il ne l'aime toujours pas. Pour l'instant ce que j'essaie est un objet auquel je passe une référence dans une méthode appelée sur une variable de type StageCleared. Je verrai si cela peut le résoudre. C'est une manière obscure d'utiliser le même objet mais il faut aimer les pointeurs dans les cas comme celui-ci. – ComethTheNerd

+1

L'utilisation de Synchronized avec le thread comme argument est la réponse que je pense de mon noodling autour, il a résolu le problème d'une IllegalMonitorStateException. Peut-être que cela vous sera utile si jamais vous en avez besoin! – ComethTheNerd

0

Utilisez FutureTask et Executor, vérifiez-le dans l'API Java. C'est comme si vous définissiez l'opération et FutureTask, et il attendra que la tâche soit terminée. Plus facile que d'attendre()

Questions connexes