LoginSignup
4
3

More than 5 years have passed since last update.

Android KTXを使ってみた〜systemService編〜

Posted at

検証環境

この記事の内容は、以下の環境で検証しました。

  • 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に追記してください。

build.gradle(一部省略)
repositories {
    google()
}
dependencies {
    implementation 'androidx.core:core-ktx:0.1'
}

注意点

Android KTXはcompileSdkVersionが27になっていなければ使用できません。
また、compileSdkVersionを27にする場合、その他のライブラリもバージョンを上げる必要があります。
結果的に以下のような形になります。

build.gradle(一部省略)
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

システムが提供するサービスの型を指定するだけで取得できるのは簡潔に書けていいですね。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3