技術情報
AndroidのContext
Androidを開発する上でContextを利用することは多々あります
ダイアログの表示、プリファレンス、トーストの表示などです
また、ユーティリティクラスでは、そのほとんどでContextの入れ子ができるでしょう
私は、Activity、Service、Broadcastで取得したContext、Applicationで取得したContextくらいしか使ったことはありませんが、どのような違いがあるのかを確認していきます
Activity、Service、Broadcast上のContext
ActivityとServiceについては、「this」でContextを取得することができます
Broadcastは、onReceiveの引数にContextがあるので、それを使います
これらのContextは、取得してきたコンポーネントの寿命と同じになります
コンポーネントは終了しているが、コールバックで戻ってきたところに、Contextを使っている場合には、メモリリークでエラーとなりアプリが異常終了します
ダイアログの表示タイミングによっても、メモリリークが発生します
Applicaiton上のContext
Application上のContextとは、getApplicationContext()で取得できるContextです
他にも、Applicationを継承しているクラスで「this」を使うこと、上記Activity等のContextからgetApplicationContext()で取得することができます
このContextの寿命は、アプリのタスクが切れるまでとなります
こちらの方が、一般的に寿命は長いと思います
終わりに
Contextは多くの箇所で使いますので、場所にあったContextを使うことが一番かと思います
Activity内で完結しており、Activityが終了以降はContextを使用していないなら、ActivityのContextを使えばいいと思います
Activityが終了以降でもContextを使用している場合でも、その一部をApplicationのContextを使えば問題ないかと思います
また、ダイアログ等の表示にContextを使う場合には、各Contextのテーマ等も影響しますので、注意が必要です
火曜日担当:poppy
admin at 2017年07月11日 11:39:01
AndroidStudioでKotlinを使用(2)
admin at 2017年07月03日 07:10:19
AndroidStudioでKotlinを使用
少し前からKotlinに対しての興味はあり、AndroidStudioでも公式にサポートされることになるので、使って見ようかと思いました
Kotlinを使う場合にAndroid Studio3.0未満では、Pluginからインストールして、gradleも修正する必要がありました
Android Studio3.0からはプラグインをインストールせずとも、プリインストールされていて、標準機能として使えるようになるみたいです
今回は、変数宣言、if文、for文などの基本的な記述をまとめていきます
admin at 2017年06月20日 10:00:01
- 2017年06月19日
- Android
AndroidOSシェア(2017年6月)
SH at 2017年06月19日 10:28:53
Android Oの気になる変更点
admin at 2017年05月30日 10:00:43