Toast: в руководствах Docs говорится, что нужно использовать getApplicationContext, а в ссылках Docs говорится, что нужно использовать getApplication или getActivity. - PullRequest
0 голосов
/ 11 мая 2019

https://developer.android.com/guide/topics/ui/notifiers/toasts: в примерах источников они используют getApplicationContext.

https://developer.android.com/reference/android/widget/Toast.html#makeText(android.content.Context,%20int,%20int): "Контекст: контекст для использования. Обычно ваш объект приложения или действия.".

Что мы должны использовать в окончательном?

Чтобы ответить на этот вопрос, я думаю, нужно подумать о ...:

  • Жизненный цикл объекта Toast, определенный во фрагменте, а затем жизненный цикл Toast, определенный в действии
  • Риск утечки памяти, если мы используем getActivity, который зависит от Toast

https://blog.mindorks.com/understanding-context-in-android-application-330913e32514: здесь, кажется, следует использовать getActivity для Toast.

1 Ответ

1 голос
/ 11 мая 2019

Что мы должны использовать в окончательном?

Вообще говоря: если Context применяется к чему-либо для пользовательского интерфейса, используйте Activity, чтобы можно было учесть текущую тему. Toast - это пользовательский интерфейс; поэтому используйте Activity.

На самом деле, я не думаю, что Toast обязательно использует что-то из темы.

Жизненный цикл объекта Toast, определенного в фрагменте, а затем жизненный цикл Toast, определенного в действии

Это одно и то же, поскольку фрагмент не связан с Toast. Вы не передаете Fragment какому-либо методу Toast.

Риск утечки памяти, если мы используем getActivity, который зависит от Toast

Поскольку Toast недолговечен, любая возможная утечка недолговечна. Утечки являются проблемой, когда на утечку материала ссылаются в течение неопределенного периода времени, и поэтому она не будет очищена.

...