2017-10-13 5 views
1

J'ai lu quelques discussions sur quand utiliser l'activité et quand utiliser le contexte de l'application (par exemple on this SO post).Toast.makeText() - contexte d'activité ou d'application

Je me demande quelles sont les implications de l'utilisation de l'activité ou du contexte d'application pour la méthode Toast.makeText().

La documentation dit que brièvement pour le paramètre context:

Contexte: Le contexte d'utilisation. Habituellement, votre objet Application ou Activité.

Mes questions sont

  • Lorsque vous utilisez le contexte d'activité est la durée du pain grillé lié au cycle de vie de l'activité?
  • La fuite de mémoire est-elle un problème sérieux ici? Ils semblent être limités par la durée du toast.

De quoi d'autre faut-il tenir compte?

+1

Les fuites de mémoire sont un problème sérieux. Si vous perdez de la mémoire vous risquez de ne pas avoir assez de mémoire – Zoe

Répondre

4

Je voudrais simplement utiliser le contexte Application. En utilisant votre contexte Activity, une référence à votre activité restera vraisemblablement en vie jusqu'à ce que le Toast cesse d'afficher, ce qui pourrait retarder la récupération de place de quelques secondes. Lors de l'utilisation du contexte d'activité, la durée du toast est-elle liée au cycle de vie de l'activité? Je n'ai pas regardé le code source mais je dirais que c'est le contraire: votre référence d'activité restera jusqu'à ce que votre Toast cesse d'être affiché.

La fuite de mémoire est-elle un problème sérieux?

Oui, ils le sont! Dans ce cas, il ne sera pas une fuite pour toujours car la référence à l'activité sera éventuellement collectée. Vous utiliserez plus de mémoire que nécessaire pendant quelques secondes, donc ApplicationContext est plus sûr. Et dans tous les cas, je ne vois pas de réel inconvénient à utiliser le ApplicationContext ici.

+1

Merci pour votre réponse. La seule raison d'utiliser le contexte d'activité aurait été si la durée de vie du toast avait été liée à la durée de vie de l'activité. Comme cela ne semble pas être le cas, je suis entièrement d'accord. –