kotlinAndroidLibを使ってみた。

以前にkotlinでAndroidするには?でググっていたら、kotlinAndroidLibというのがAndroidライブラリプロジェクトとしてgithubで公開されていました。
BatteryCrystalをkotlinで作り直した後に、試してみようと考えていたので、早速試してみました。

github: kotlinAndroidLib

使ってみたところ、コードが簡潔になってすごくいいです。
ただ、kotlinのバージョンが古いときに作られたライブラリプロジェクトで、現在はあんまりメンテナンスされてないようで、最初に使おうとしたら型チェックが通らなくてダメだったので、エラーになった部分は全部コメントアウトして使っています。ちなみにエラーになった部分はSQLite系やCursor系でした。

さて、kotlinAndroidLibを使った例を示します。
自分のコードで使っているので、IntentFilterをみせようと思います。
まず、Javaのコードです。

IntentFilter filter = new IntentFilter();
filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
registerReceiver(mReceiver, filter);

次に、kotlinのコード。

val filter = IntentFilter()
filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION)
registerReceiver(mReceiver, filter)

最後に、kotlinAndroidLibを使ったkotlinのコード

registerReceiver(mReceiver, IntentFilter{
  addAction(WifiManager.WIFI_STATE_CHANGED_ACTION)
})

ちょっとスッキリした感じに書けます。

次に、匿名クラスのBroadcastReceiver。
Javaだと以下のような感じですね。

private BroadcastReceiver mReceiver = new BroadcastReceiver(){
  @override
  public void onReceive(Context context, Intent intent) {
    // 処理
  }
}

kotlinだと、こう。

private val mReceiver = object : BroadcastReceiver(){
  public override fun onReceive(context : Context?, intent : Intent?) {
    // 処理
  }
}

さらに、kotlinAndroidLibを使ったら、こう。

private val mReceiver = BroadcastReceiver{(context, intent) ->
  // 処理
}

だいぶ簡潔になりました。

BatteryCrystalのapkのサイズを比較すると、

Java: 1.1MB
kotlin: 1.3MB
kotlinAndroidLib: 1.4MB

くらいだったので、Javaにくらべると多少大きくなるものの、今の端末の容量であれば全然問題ないんじゃないかなーと思います。また、kotlinを使っている人にとっては利点こそはあっても悪い点はないのではないかなーと思います。自分の場合はいまいちまだkotlinに慣れていないので、つまずくことがまだ多いですが、コードを簡潔に書けると楽しいので、それだけでも使ってみてよかったなと思います。


タグ Android, Kotlin | パーマリンク.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です