بهترین شیوه های تعامل نقشه ناوبری
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
این صفحه بهترین روشها را برای تعامل با نقشه پیمایش در برنامه شما توضیح میدهد.
در صورت امکان از SupportNavigationFragment
به جای NavigationView
استفاده کنید
SupportNavigationFragment
پوششی برای سهولت مدیریت تماسهای چرخه حیات NavigationView
است، بنابراین نیازی به مدیریت این تماسها ندارید. این روش کمتر مستعد خطا است و روش ترجیحی برای استفاده از Navigation در برنامه شماست. هنگام استفاده از SupportNavigationFragment
، مطمئن شوید که رویدادهای چرخه حیات NavigationView
فراخوانی نکنید.
اگر از NavigationView
استفاده میکنید، هنگام فراخوانی روشهای چرخه حیات، از ترتیب دقیق استفاده کنید
NavigationView
نقشه ناوبری را میزبانی میکند و رویدادهای چرخه حیات را بهعنوان فعالیتها و قطعات Android از نزدیک دنبال میکند و در هنگام فراخوانی این رویدادهای چرخه حیات، اقدامات خاصی را انجام میدهد. NavigationView
چندین مقداردهی اولیه را در NavigationView#onCreate
و NavigationView#onStart
و پاکسازیها را در NavigationView#onStop
و NavigationView#onDestroy
و همچنین زمانی که سایر رویدادهای چرخه حیات پردازش میشوند، اجرا میکند.
روشهای چرخه حیات NavigationView
همان معنایی را دارند که برای فعالیتها یا قطعات اندروید دارند. برای مثال، onCreate()
از NavigationView
تقریباً به فراخوانی چرخه حیات از فعالیت یا قطعه Android ترجمه میشود و باید توسط آن فراخوانی شود. از آنجایی که تماسهای چرخه حیات NavigationView
بر اساس و به همان ترتیب فراخوانیهای چرخه حیات Android هستند، به ترتیب قوی این روشهای NavigationView نیاز است. در غیر این صورت، ممکن است با نشت حافظه ، خطاهای رابط کاربری، به روز نشدن مکان و مشکلات دیگر مواجه شوید.
برای کسب اطلاعات بیشتر در مورد چرخه حیات فعالیت Android، به بخش مفاهیم چرخه فعالیت در مستندات برنامهنویس Android مراجعه کنید.
جدول زیر نشان می دهد که چه زمانی باید سایر روش های چرخه حیات پس از روش های چرخه حیات مشخص شده فراخوانی شوند:
روش چرخه حیات | در جایی در چرخه حیات فعالیت فراخوانی می شود | پس از کدام روش چرخه حیات فراخوانی شد |
---|
onConfigurationChanged() | هنگامی که UI در پیش زمینه است و پیکربندی تغییر می کند، فراخوانی می شود. | همیشه بعد از onStart() |
onTrimMemory() | زمانی که یک فعالیت در پسزمینه است فراخوانی میشود. | همیشه بعد از onPause() |
onSaveInstance() | قبل از از بین رفتن یک فعالیت فراخوانی می شود. | همیشه بعد از onStop() |
این متدهای چرخه عمر را چندین بار بدون فراخوانی روش بسته شدن مربوطه فراخوانی نکنید. علاوه بر این، به خاطر داشته باشید که اگر برخی از این فراخوانهای چرخه حیات اندروید توسط خود برنامه مدیریت میشوند و NavigationView
پس از ایجاد یا شروع به قطعه اضافه میشود، برنامه باید روشهای خاص خود را به ترتیب مناسب فراخوانی کند تا به درستی Navigation SDK را مقداردهی اولیه کند.
برای راهنمایی بیشتر در مورد استفاده از این روشها، به برنامه نمایشی Navigation SDK مراجعه کنید.
اگر از NavigationView
استفاده می کنید، رویدادهای چرخه حیات را از فعالیت یا قطعه فراخوانی کنید، نه هر دو
برای حفظ نظم دقیق متدهای چرخه حیات، این رویدادها را از اکتیویتی یا از فراخوانهای چرخه حیات قطعه که به ترتیب این رویدادها را دریافت میکنند، فراخوانی کنید. این رویکرد تضمین میکند که برنامهها نیازی به هماهنگی بین بخشها و فعالیتها و ایجاد تماسهای تکراری ندارند.
جز در مواردی که غیر از این ذکر شده باشد،محتوای این صفحه تحت مجوز Creative Commons Attribution 4.0 License است. نمونه کدها نیز دارای مجوز Apache 2.0 License است. برای اطلاع از جزئیات، به خطمشیهای سایت Google Developers مراجعه کنید. جاوا علامت تجاری ثبتشده Oracle و/یا شرکتهای وابسته به آن است.
تاریخ آخرین بهروزرسانی 2025-08-29 بهوقت ساعت هماهنگ جهانی.
[null,null,["تاریخ آخرین بهروزرسانی 2025-08-29 بهوقت ساعت هماهنگ جهانی."],[[["\u003cp\u003ePrioritize using \u003ccode\u003eSupportNavigationFragment\u003c/code\u003e over \u003ccode\u003eNavigationView\u003c/code\u003e for simplified lifecycle management and error reduction.\u003c/p\u003e\n"],["\u003cp\u003eWhen using \u003ccode\u003eNavigationView\u003c/code\u003e directly, ensure strict adherence to the Android lifecycle order when invoking its lifecycle methods to prevent issues like memory leaks and UI errors.\u003c/p\u003e\n"],["\u003cp\u003eInvoke \u003ccode\u003eNavigationView\u003c/code\u003e lifecycle events exclusively from either the activity or the fragment to maintain order and avoid duplicate calls.\u003c/p\u003e\n"]]],[],null,["# Navigation map interaction best practices\n\nThis page explains best practices for interacting with the Navigation map in\nyour app.\n\nUse `SupportNavigationFragment` instead of `NavigationView`, whenever possible\n------------------------------------------------------------------------------\n\n`SupportNavigationFragment` is a wrapper for the convenience of handling the\n`NavigationView` lifecycle callbacks, so you don't need to manage these\ncallbacks themselves. This method is less error-prone and the preferred way to\nuse Navigation in your app. When using `SupportNavigationFragment`, be sure not\nto invoke `NavigationView` lifecycle events.\n\nIf using `NavigationView`, use strict ordering when invoking lifecycle methods\n------------------------------------------------------------------------------\n\n`NavigationView` hosts the Navigation map and closely follows the lifecycle\nevents as Android activities and fragments, taking specific actions when these\nlifecycle events are invoked. `NavigationView` executes multiple initializations\non `NavigationView#onCreate` and `NavigationView#onStart`, and cleanups on\n`NavigationView#onStop` and `NavigationView#onDestroy`, as well as when other\nlifecycle events are processed.\n\n`NavigationView` lifecycle methods have the same meaning as they do for Android\nactivities or fragments. For example, `onCreate()` of `NavigationView` roughly\ntranslates to and should be invoked by lifecycle callbacks from the Android\nactivity or fragment. Since the `NavigationView` lifecycle callbacks are based\non and invoked in the same order as the Android lifecycle callbacks, strong\nordering of these NavigationView methods is required. Otherwise, you may\nexperience [memory\nleaks](/maps/documentation/navigation/android-sdk/memory-best-practices), UI\nerrors, location not being updated, and other issues.\n\nFor more information about the Android activity lifecycle, see the\n[Activity-lifecycle concepts](https://developer.android.com/guide/components/activities/activity-lifecycle#alc)\nsection in the Android developer documentation.\n\nThe following table shows when other lifecycle methods should be invoked, after\nspecified lifecycle methods:\n\n| Lifecycle method | Invoked where in the activity lifecycle | Invoked after which lifecycle method |\n|----------------------------|-------------------------------------------------------------------------|--------------------------------------|\n| `onConfigurationChanged()` | Invoked when the UI is in the foreground and the configuration changes. | Always after `onStart()` |\n| `onTrimMemory()` | Invoked when an activity is in the background. | Always after `onPause()` |\n| `onSaveInstance()` | Invoked before an activity is destroyed. | Always after` onStop()` |\n\nDon't call these lifecycle methods multiple times without calling the\ncorresponding closing method first. In addition, keep in mind that if some of\nthese Android lifecycle callbacks are managed by the app itself, and the\n`NavigationView` is added to the fragment after creation or start, the app\nshould call the specific methods themselves in proper order in order to\ncorrectly initialize the Navigation SDK.\n\nFor additional guidance on using these methods, see the [Navigation SDK demo\napp](https://github.com/googlemaps-samples/android-navigation-samples/blob/4afba69715ebf6c176a2eb438f86d06c23065e7f/navigation-sample/app/src/main/java/com/example/navigationapidemo/NavViewActivity.kt#L279).\n\nIf using `NavigationView`, invoke lifecycle events from the activity or fragment, not both\n------------------------------------------------------------------------------------------\n\nTo keep the strict ordering of the lifecycle methods, invoke these events from\neither the activity or fragment lifecycle callbacks, which receive these events\nin order. This approach ensures that apps don't need to coordinate between\nfragments and activities and cause duplicate calls."]]