このページでは、アプリでナビゲーション マップを操作するためのベスト プラクティスについて説明します。
可能な限り NavigationView
ではなく SupportNavigationFragment
を使用する
SupportNavigationFragment
は NavigationView
ライフサイクル コールバックを簡単に処理するためのラッパーです。そのため、これらのコールバックを自分で管理する必要はありません。この方法はエラーが発生しにくく、アプリで Navigation を使用する際の推奨される方法です。SupportNavigationFragment
を使用する場合は、NavigationView
ライフサイクル イベントを呼び出さないようにしてください。
NavigationView
を使用している場合は、ライフサイクル メソッドを呼び出すときに厳密な順序付けを使用する
NavigationView
はナビゲーション マップをホストし、Android のアクティビティやフラグメントと同様にライフサイクル イベントに密接に追従します。これらのライフサイクル イベントが呼び出されると、特定のアクションを実行します。NavigationView
は、NavigationView#onCreate
と NavigationView#onStart
で複数の初期化を実行し、NavigationView#onStop
と NavigationView#onDestroy
でクリーンアップを実行します。また、他のライフサイクル イベントが処理されるときにも実行します。
NavigationView
ライフサイクル メソッドは、Android アクティビティやフラグメントの場合と同じ意味を持ちます。たとえば、NavigationView
の onCreate()
は、Android アクティビティまたはフラグメントのライフサイクル コールバックによって呼び出されるように変換されます。NavigationView
ライフサイクル コールバックは Android ライフサイクル コールバックと同じ順序で呼び出されるため、これらの NavigationView メソッドの厳密な順序付けが必要です。そうしないと、メモリリーク、UI エラー、位置情報の更新がされないなどの問題が発生する可能性があります。
Android アクティビティのライフサイクルについて詳しくは、Android デベロッパー向けドキュメントのアクティビティのライフサイクルのコンセプトのセクションをご覧ください。
次の表は、指定されたライフサイクル メソッドの後に、他のライフサイクル メソッドを呼び出すタイミングを示しています。
ライフサイクル メソッド | アクティビティのライフサイクルのどこで呼び出されるか | どのライフサイクル メソッドの後に呼び出されるか |
---|---|---|
onConfigurationChanged()
|
UI がフォアグラウンドにあり、構成が変更されたときに呼び出されます。 | 常に onStart() より後
|
onTrimMemory()
|
アクティビティがバックグラウンドにあるときに呼び出されます。 | 常に onPause() より後
|
onSaveInstance()
|
アクティビティが破棄される前に呼び出されます。 | 常に onStop() より後
|
対応する終了メソッドを最初に呼び出さずに、これらのライフサイクル メソッドを複数回呼び出さないでください。また、これらの Android ライフサイクル コールバックの一部がアプリ自体で管理され、NavigationView
が作成後または開始後にフラグメントに追加される場合、アプリは Navigation SDK を正しく初期化するために、特定のメソッドを適切な順序で呼び出す必要があります。
これらのメソッドの使用に関する追加のガイダンスについては、Navigation SDK デモアプリをご覧ください。
NavigationView
を使用する場合は、アクティビティまたはフラグメントのいずれかからライフサイクル イベントを呼び出す
ライフサイクル メソッドの厳密な順序を維持するには、アクティビティまたはフラグメントのライフサイクル コールバックからこれらのイベントを呼び出します。これらのイベントは順に受信されます。このアプローチにより、アプリはフラグメントとアクティビティの間で調整する必要がなくなり、呼び出しの重複が発生しなくなります。