Использование контекста Android (Kotlin)

Я исследовал различные методы доступа к контексту деятельности, но результаты были неоднозначными. Одна из концепций, с которыми я столкнулся, заключалась в создании глобальной контекстной переменной в классе mainActivity. См. Запись на GitHub ниже:

https://gist.github.com/paraya3636/bf8108a75eb49323e56c0c90dd0747e0

Это кажется очень привлекательным, и я уверен, что он будет работать каждый раз, когда мне понадобится доступ к моему контексту. Мой вопрос: правильно ли это и поощряется, или чего следует избегать? Есть ли при этом подводные камни и опасности? Или, может быть, это ситуативно и действительно зависит от цели приложения?

Подводя итог, я ищу опытный ответ о том, как обрабатывать контекст, когда обращаться к нему и как получить к нему доступ (просто предложения высокого уровня). Я прошел много руководств по Android и много раз обращался / использовал контексты, но я действительно хотел бы улучшить свое понимание темы и поучиться у других, которые гораздо больше разбираются в разработке Kotlin для Android, чем я. Я просто чувствую, что часто летаю на ней; Я лучше ПОНИМАЮ это и в результате стану лучшим разработчиком.

Заранее спасибо!

0
0
510
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

При переходе по ссылке используется контекст приложения. Есть два типа контекста ApplicationContext и ActivityContext, оба имеют суперкласс Context.

ActivityContext представляют информацию о текущей деятельности, и ее жизненный цикл зависит от ActivityLifecycle.

ApplicationContext's, если вам нужен контекст, жизненный цикл которого отделен от текущего действия, чем только вы должны использовать это.

Если вы хотите запустить какую-либо службу или функциональность, не зависящую от жизненного цикла активности, вы можете использовать applicationContext.

Если вы хотите показать dialog или startActivity, вы можете использовать activityContext.

Вы можете получить applicationContext в действии (Kotlin): - [email protected]

Вы можете получить activityContext в activity (Kotlin): - this@ActivityName

Вы можете найти контекст во фрагменте (Котлин): - activity или context

Это очень проницательно и проясняет многие заблуждения, которые у меня были. Иногда мне нужно просто прочитать это в упрощенном виде. Я ценю это, это определенно поможет моему пониманию двигаться вперед.

Keith Kowalski 15.08.2018 16:31

Другие вопросы по теме