Я подумал, есть ли способ определить, какой контекст лучше всего передать таким методам, как Toast.makeText()
, или при получении SharedPreferences
, как с context.getSharedPreferences()
.. Есть ли причина не всегда использовать Контекст приложения на месте? из Activity
или IntentService
контекстов, например?
Как определить правильный контекст для использования в разных случаях (Toast.makeText, context.getSharedPreferences и т. д.)
Ответы (1)
Чтобы объяснить разницу, скопировано из https://stackoverflow.com/a/4128799/1143977.
Оба они являются экземплярами Context, но экземпляр приложения привязан к жизненному циклу приложения, а экземпляр Activity привязан к жизненному циклу Activity. Таким образом, они имеют доступ к различной информации о среде приложения.
Если вы читаете документы в getApplicationContext, там отмечается, что вы должны использовать это только в том случае, если вам нужен контекст, жизненный цикл которого отделен от текущего контекста.
Контекст действия предположительно содержит некоторую информацию о текущем действии, необходимую для выполнения этих вызовов. Если вы покажете точное сообщение об ошибке, возможно, вы сможете указать, что именно ему нужно.
Но в целом используйте контекст активности, если у вас нет веской причины не делать этого.