このページでは、アプリで Navigation マップを操作する際のベスト プラクティスについて説明します。
可能な限り NavigationView ではなく SupportNavigationFragment を使用する
SupportNavigationFragment は、NavigationView ライフサイクル コールバックを簡単に処理するためのラッパーです。そのため、これらのコールバックを自分で管理する必要はありません。この方法はエラーが発生しにくく、アプリで Navigation を使用する際におすすめの方法です。SupportNavigationFragment を使用する場合は、NavigationView ライフサイクル イベントを呼び出さないようにしてください。
NavigationView を使用する場合は、ライフサイクル メソッドを呼び出す際に厳密な順序を使用する
NavigationView は Navigation マップをホストし、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 を使用する場合は、アクティビティまたはフラグメントからライフサイクル イベントを呼び出す(両方から呼び出さない)
ライフサイクル メソッドの厳密な順序を維持するには、これらのイベントをアクティビティまたはフラグメントのライフサイクル コールバックから呼び出します。これらのイベントは順番に受信されます。この方法により、アプリはフラグメントとアクティビティの間で調整する必要がなく、呼び出しが重複することはありません。