このページでは、アプリでナビゲーション マップを操作するためのベスト プラクティスについて説明します。
可能な限り 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
を使用する場合は、アクティビティまたはフラグメントのいずれかからライフサイクル イベントを呼び出します。
ライフサイクル メソッドの順序を厳密に保つには、これらのイベントを順番に受け取るアクティビティまたはフラグメントのライフサイクル コールバックからこれらのイベントを呼び出します。このアプローチでは、アプリがフラグメントとアクティビティを調整して重複する呼び出しを発生させる必要がなくなります。