J'utilise un Asynctask comme contrôleur de boucle pour un jeu et j'ai remarqué que le thread créé continuait de tourner une fois l'activité terminée.Comment annuler un AsyncTask
Je me suis rendu compte que c'était le comportement correct d'un thread séparé, puis j'ai essayé de chercher des réponses sur la façon de terminer le thread lorsque l'application entre dans OnPause.
J'ai trouvé beaucoup de questions similaires, mais pas de réponses directes, mais j'ai finalement trouvé une méthode, je vais donc répondre à ma propre question ici pour aider les autres à l'avenir. (Et pour recevoir des améliorations à ma réponse aussi bien)
AsyncTask a une méthode cancel() entièrement valide, mais je ne peux pas trouver une documentation claire sur la façon de l'utiliser :) En tant que passionné à temps partiel à moins que vous allez me montrer que comment vraiment de mauvaises choses vont arriver à mon application si j'utilise Asynctask comme un simple contrôleur de boucle je vais l'utiliser comme un moyen facile de faire un fil de boucle de jeu :) Je pense que je vais très bien en suivant "les règles" en ayant même un fil séparé :) – SimpleSi
Le problème lorsque vous invoquez 'cancel()' sur votre 'AsyncTask' est qu'une fois que vous reprenez votre jeu, vous devez recommencer en créant une nouvelle' AsyncTask'. C'est une mauvaise pratique, en particulier dans le développement de jeux. Bien que, si vous voulez l'avoir comme ça, voici une bonne réponse sur la façon dont vous pouvez annuler un 'AsyncTask'. http://stackoverflow.com/questions/5513855/android-asyntask-with-progress-dialog-cancel/5513904#5513904 – Wroclai
Peut-être que j'ai posé la mauvaise question :(Dans mon code, je lance task.cancel (true) dans OnPause mais l'AsyncTask ne se termine pas et je reçois donc un autre thread en cours d'exécution la prochaine fois que je lance l'application :(Donc, j'ai dû inclure une vérification de this.isCancelled dans mon Asynctask – SimpleSi