Я исследовал различные методы доступа к контексту деятельности, но результаты были неоднозначными. Одна из концепций, с которыми я столкнулся, заключалась в создании глобальной контекстной переменной в классе mainActivity. См. Запись на GitHub ниже:
https://gist.github.com/paraya3636/bf8108a75eb49323e56c0c90dd0747e0
Это кажется очень привлекательным, и я уверен, что он будет работать каждый раз, когда мне понадобится доступ к моему контексту. Мой вопрос: правильно ли это и поощряется, или чего следует избегать? Есть ли при этом подводные камни и опасности? Или, может быть, это ситуативно и действительно зависит от цели приложения?
Подводя итог, я ищу опытный ответ о том, как обрабатывать контекст, когда обращаться к нему и как получить к нему доступ (просто предложения высокого уровня). Я прошел много руководств по Android и много раз обращался / использовал контексты, но я действительно хотел бы улучшить свое понимание темы и поучиться у других, которые гораздо больше разбираются в разработке Kotlin для Android, чем я. Я просто чувствую, что часто летаю на ней; Я лучше ПОНИМАЮ это и в результате стану лучшим разработчиком.
Заранее спасибо!
При переходе по ссылке используется контекст приложения.
Есть два типа контекста ApplicationContext и ActivityContext, оба имеют суперкласс Context.
ActivityContext представляют информацию о текущей деятельности, и ее жизненный цикл зависит от ActivityLifecycle.
ApplicationContext's, если вам нужен контекст, жизненный цикл которого отделен от текущего действия, чем только вы должны использовать это.
Если вы хотите запустить какую-либо службу или функциональность, не зависящую от жизненного цикла активности, вы можете использовать applicationContext.
Если вы хотите показать dialog или startActivity, вы можете использовать activityContext.
Вы можете получить applicationContext в действии (Kotlin): -
[email protected]
Вы можете получить activityContext в activity (Kotlin): -
this@ActivityName
Вы можете найти контекст во фрагменте (Котлин): -
activity или context
Это очень проницательно и проясняет многие заблуждения, которые у меня были. Иногда мне нужно просто прочитать это в упрощенном виде. Я ценю это, это определенно поможет моему пониманию двигаться вперед.