すてき女性エンジニアへの道

日々の勉強ブログです。「技術で人の役に立つ、喜ばれる」女性エンジニアを目指してます✨その為の第一歩としてのブログです。成長する為にも、アドバイスなど頂けたらもの凄く喜びます。宜しくお願い致します🌸

勉強: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を使用しているか把握していないと、思わぬクラッシュ原因になりかねません。(継承関係があり役割も違うから)