Ok, je suis trop en train d'annuler un Toast, et ne peut pas sembler obtenir l'annuler() pour obtenir invoqué soit dans le Activity.onDestroy() ou Activity.onStop() Après quelques lectures API-doc et googling des autres ayant besoin d'aide pour obtenir Toasts à annuler, Je pense que je ne suis toujours pas clair sur quand les activités sont arrêtées, mis en pause, détruit. J'ai besoin d'un moyen sûr de forcer mon activité à être mis en pause ou arrêté.
Dans mon cas particulier, car il n'y a que de courtes et longues Toasts durée, j'ai décidé de itérer une boucle 5 fois faire un spectacle() d'un toast longue durée, il resterait à l'écran pour 15-20 secondes. Cela fonctionne bien!
Mais, l'inconvénient (effet secondaire négatif) d'utiliser un objet Toast est qu'ils persistent même après que l'utilisateur abandonne votre application et retourne à l'écran d'accueil et commence à utiliser une autre application ... votre toast va vivre pendant les 15-20 prochaines secondes, à moins que vous pouvez garantir que vous pouvez trouver un endroit (d'une certaine manière) à invoquer cancel(). En outre, vous devez croire que Android honorera votre appel pour annuler()!
Donc, à cette fin, j'ai peaufinage ma simple boucle, en essayant de Invoke annule droite dans la boucle, et me prouver qu'il honorer un appel annuler, et se comporter visuellement comme prévu.
Extrait de code: Note: « toasts » est une variable publique INSTANCE, donc nous avoir une seule instance du Toast-objet [comme est recommandé ci-dessus, et qu'un intervenant a confirmé travaillait il y a deux ans, dans l'activité onStop() et OnDestroy()]
toast = Toast.makeText(ctxt, result, Toast.LENGTH_LONG);
for (int i=0; i < 5; i++)
{
// Long-toasts each last about 3.5 secs
toast.show();
android.os.SystemClock.sleep(1500);
toast.cancel();
android.os.SystemClock.sleep(1500);
toast = Toast.makeText(ctxt, result, Toast.LENGTH_LONG);
}
Ok, la boucle originale contenait cette seule ligne faire le spectacle. Cela fonctionne, par lui-même.
Mais d'expérimenter, j'ai ajouté ces quatre lignes, dormir environ à mi-chemin à travers les 3,5 secondes montrant, puis l'annuler, rendormir pour une seconde et demie, puis re-créer et montrer la Toast à nouveau.
Je pensais voir le pain grillé pendant environ 1,5 secondes, puis le voir disparaître, et revenir dans un autre 1,5 secondes, etc.
Devinez quoi ... le pain grillé semble jamais tout!
Ok, je suis en mumble mode ... tout ce que je manque, dans comprendre les mystères intérieurs-de la façon dont la Toast classe est mis en œuvre et est censé se comporter?
Et, à mon premier numéro: Comment faire pour que mon activité se mette en veille ou s'arrête?
[Note: Je lis ce forum BEAUCOUP ... c'est génial !!! Ceci est ma première publication dans le milieu d'une discussion de fil ... Désolé que ma réponse obtienne marqué comme RÉPONSE, plutôt que comme une question concernant au sujet de ce fil. ]
Sauvegarde ce @EboMike [a dit dans sa réponse] (http://stackoverflow.com/a/4395089/383414), je l'ai eu du succès avec mon 'essentiel Boast.java' pour la dernière quelques années - [Boast.java sur Github] (https://gist.github.com/mobiRic/9786993) –