Toast.makeText() — действие или контекст приложения

Я прочитал пару обсуждений о том, когда использовать активность и когда использовать контекст приложения (например, в этом сообщении SO) .

Мне интересно, каковы последствия использования контекста действия или приложения для метода Toast.makeText().

В документации только кратко говорится о параметре context:

Контекст: контекст для использования. Обычно ваш объект Application или Activity.

Мои вопросы

  • При использовании контекста активности продолжительность всплывающего уведомления связана с жизненным циклом активности?
  • Являются ли утечки памяти серьезной проблемой здесь? Кажется, они ограничены продолжительностью тоста.

Что еще следует учитывать?


person Peter F    schedule 13.10.2017    source источник
comment
Утечки памяти — серьезная проблема. Если вы тратите память впустую, вы рискуете не иметь достаточно памяти   -  person Zoe    schedule 13.10.2017


Ответы (1)


Я бы просто использовал контекст Application. Использование вашего контекста Activity означает, что ссылка на вашу активность, скорее всего, останется активной до тех пор, пока всплывающее уведомление не перестанет отображаться, что может задержать сборку мусора на несколько секунд.

При использовании контекста активности продолжительность всплывающего уведомления связана с жизненным циклом активности?

Я не смотрел на исходный код, но я бы сказал, что все наоборот: ссылка на вашу активность останется до тех пор, пока ваш Toast не перестанет отображаться.

Являются ли утечки памяти серьезной проблемой?

Да, они ! В этом случае утечка не будет вечной, поскольку ссылка на активность в конечном итоге будет удалена сборщиком мусора. Вы будете использовать больше памяти, чем необходимо, в течение нескольких секунд, поэтому ApplicationContext безопаснее. И во всех случаях я не вижу реальных недостатков использования здесь ApplicationContext.

person mbonnin    schedule 13.10.2017
comment
Спасибо за Ваш ответ. Единственной причиной использования контекста действия было бы, если бы время жизни всплывающего уведомления было привязано к времени существования действия. Поскольку это не так, я полностью согласен. - person Peter F; 13.10.2017