勉強:Contextについて
Contextとは
アプリケーションのグローバルな環境情報、リソース、クラスアクセス、アプリケーションレベルの操作などについて取り扱う。
Contextを継承しているクラス
--Contextクラス
--ContextWrapperクラス
--Applicationクラス
--ContextThemeWrapperクラス
--Activityクラス
--Serviceクラス
種類が沢山あります。なのでContextを使用するときには使い分けが必要。
特に注意するContextの種類
ApplicationのContext
- アプリケーションのライフライクルに準ずる。
- Themeの設定を行うContextThemeWrapperクラスをApplicationクラスは継承していないので、Theme設定を行う目的で引数を渡す場合にApplicationクラスを渡してしまうと、クラッシュになるといった場合も。
- 静的なオブジェクトだったり、Appicationの寿命と同じ場合はApplicationのContextを使用。
ActivityのContext
- Activityのライフサイクルに準ずる。
- 画面のUI関係。
- Contextの参照を静的なものにしたまま保持しておくとメモリリークの可能性がある。
実際にContextを使用する場所でのContextの意味合いの違いも
- どのクラスのContextなのかが大事。
- どのパッケージ名、どのクラスなのかを明確にして自分がどのContextを使用しているか把握していないと、思わぬクラッシュ原因になりかねません。(継承関係があり役割も違うから)