ナビゲーション マップ操作のベスト プラクティス

このページでは、アプリでナビゲーション マップを操作するためのベスト プラクティスについて説明します。

可能な限り NavigationView ではなく SupportNavigationFragment を使用する

SupportNavigationFragment は、NavigationView ライフサイクル コールバックを処理するためのラッパーであるため、これらのコールバック自体を管理する必要はありません。この方法はエラーが発生しにくいため、アプリで Navigation を使用する場合は、この方法をおすすめします。SupportNavigationFragment を使用する場合は、NavigationView ライフサイクル イベントを呼び出さないようにしてください。

NavigationView を使用している場合は、ライフサイクル メソッドを呼び出すときに厳格な順序を使用

NavigationView は Navigation マップをホストし、Android アクティビティやフラグメントとしてライフサイクル イベントを厳密に追跡し、これらのライフサイクル イベントが呼び出されたときに特定のアクションを実行します。NavigationView は、NavigationView#onCreateNavigationView#onStart で複数の初期化と NavigationView#onStopNavigationView#onDestroy でのクリーンアップを実行します。また、他のライフサイクル イベントが処理されるときにも実行します。

NavigationView ライフサイクル メソッドは、Android のアクティビティやフラグメントの場合と同じ意味を持ちます。たとえば、NavigationViewonCreate() は、Android アクティビティまたはフラグメントのライフサイクル コールバックによって呼び出され、大まかに翻訳されます。NavigationView ライフサイクル コールバックは Android ライフサイクル コールバックに基づいて呼び出され、呼び出し順序も同じであるため、これらの NavigationView メソッドの順序を厳密にする必要があります。そうしないと、メモリリーク、UI エラー、位置情報の更新されないなどの問題が発生する可能性があります。

Android アクティビティのライフサイクルの詳細については、Android デベロッパー向けドキュメントのアクティビティのライフサイクルのコンセプトをご覧ください。

次の表に、指定されたライフサイクル メソッドの後に他のライフサイクル メソッドを呼び出す必要があるタイミングを示します。

ライフサイクル メソッド アクティビティのライフサイクルのどこで呼び出される どのライフサイクル メソッドの後に呼び出される
onConfigurationChanged() UI がフォアグラウンドにあり、構成が変更されたときに呼び出されます。 常に onStart() 以降
onTrimMemory() アクティビティがバックグラウンドにあるときに呼び出されます。 常に onPause() 以降
onSaveInstance() アクティビティが破棄される前に呼び出されます。 常に onStop()以降

対応する終了メソッドを最初に呼び出さずに、これらのライフサイクル メソッドを複数回呼び出さないでください。また、これらの Android ライフサイクル コールバックの一部がアプリ自体によって管理され、作成または開始後に NavigationView がフラグメントに追加される場合は、Navigation SDK を正しく初期化するために、アプリが特定のメソッドを適切な順序で呼び出す必要があります。

これらのメソッドの使用に関する詳細なガイダンスについては、Navigation SDK デモアプリをご覧ください。

NavigationView を使用する場合は、アクティビティまたはフラグメントからライフサイクル イベントを呼び出します(両方ではありません)

ライフサイクル メソッドの順序を厳密に保つには、これらのイベントを順番に受け取るアクティビティまたはフラグメントのライフサイクル コールバックからこれらのイベントを呼び出します。このアプローチでは、アプリがフラグメントとアクティビティを調整して重複する呼び出しが発生することはありません。