見出し画像

Jetpack Navigation (Google I/O'19)メモ

Google I/O 2019のJetpack Navigationのセッションをまとめました。カッコ内の時間は、下記youtubeのおおよその時間です。
https://www.youtube.com/watch?v=JFGq0asqSuA

Navigation 2.1

2019/6/2時点での最新は、5/16リリースの2.1.0-alpha04

New Features

Dialog Destinations(10:10~)

Navigation Graph内で、<dialog> destinationを使うことでDialogFragmentを表示することができるるようになった。

ViewModels in Navigation(10:55~)

Navigation Graphのスコープに基づいたViewModelがサポートされた。Fragment間でのデータ共有にViewModelが使用できる。

Safe Args(12:55~)

Safe Argsのメリットは、コンパイル時間の短縮、Auto-Completeにより型安全な宣言をサポートできる。

SafeArgs + Kotlin(17:00~)

GenerateコードをKotlinにできるようになった。

旧:apply plugin: "androidx.navigation.safeargs"
新:apply plugin: "androidx.navigation.safeargs.kotlin"

なぜKotlin対応をしたのか?
・パフォーマンスのメリットがある
・Idiomatic Kotlin Codeを使える(Named Arguments/Default arguments/Data Classes etc.)

More type support(18:10~)

Parcelable/Serializable/Enumを新たにサポート

Mudularizing(18:50~)

AppBundleやDynamicFeaturesによりアプリのマルチモジュール化が進んでいる。Navigationもその流れをサポートしている。
(Navigation Graphは巨大になりがち&アプリの規模によってはpreviewなどで動作が重くなる)

Including and nesting Navigation Graph(21:25~)

Navigation Graphに対して<include>が使える

Navigating by URI(23:00~)

Deep Linkの仕組みを使うことで、他のNavigation GraphのDestinationへ飛ぶことができる。

Navigating Dynamically(23:55~)

Dynamic Featuresに対応予定とのことです。
今年の後半にリリース予定で、以下のような流れになります。
・Dynamic FeatureのDestinationへのNavigationをinterceptする
・Dynamic Featureをinstall(Install中はprogress表示)
・Install後、Navigationの処理を継続

所感

前のプロジェクトでNavigationを使っていて、便利だった一方、Navigationのxmlが巨大になりすぎて大変だったり、safe argがenumに当時は対応していなかったりと苦労も多かったです。
ですので、今回のアップデートは私個人としてはとても興味深いものでした。実際にまだ触っていないので、触ったら具体的なコードと共に、記事を書いてみたいと思います。

この記事が気に入ったらサポートをしてみませんか?