検証環境
この記事の内容は、以下の環境で検証しました。
- Java:open jdk 1.8.0_152
- Kotlin 1.2.10
- Android Studio 3.0.2
- CompileSdkVersion:26
- MinSdkVersion:21
- TargetSdkVersion:26
- BuildToolsVersion:26.0.2
- gradle:4.0.0
- Android KTX:0.1
Android KTXとは
AndroidアプリのKotlinコードを簡潔に快適に記述できるように設計された拡張機能です。
提供元はGoogleです。オフィシャルのライブラリーになります。
※この記事を書いている時点(2018/02/08)では、プレビュー版のため、今後、APIの変更も予想されます。ご注意ください。
参考
Android Develpers Blog
https://android-developers.googleblog.com/2018/02/introducing-android-ktx-even-sweeter.html
Github
https://github.com/android/android-ktx/
API reference
https://android.github.io/android-ktx/core-ktx/
目標
Android KTXを利用したSystemServiceの取得で、従来の記述方法との違いを確認する。
準備
Android KTXを使用するために、下記をbuild.gradleに追記してください。
repositories {
google()
}
dependencies {
implementation 'androidx.core:core-ktx:0.1'
}
注意点
Android KTXはcompileSdkVersionが27になっていなければ使用できません。
また、compileSdkVersionを27にする場合、その他のライブラリもバージョンを上げる必要があります。
結果的に以下のような形になります。
android {
compileSdkVersion 27
}
repositories {
google()
}
dependencies {
implementation 'com.android.support:appcompat-v7:27.0.2'
implementation 'androidx.core:core-ktx:0.1'
}
実装
今回の例
ノーティフィケーションを表示するときに使用するNotificationManagerを取得する。
NotificationManagerの取得
NotificationManagerの取得は1行だけなので、一気に確認していきます。
以下のようになります。
// KTXでの書き方
val ktxManager = systemService<NotificationManager>()
// 従来の記述方法
val manager = this.getSystemService(android.app.Service.NOTIFICATION_SERVICE)
as NotificationManager
システムが提供するサービスの型を指定するだけで取得できるのは簡潔に書けていいですね。