این صفحه بهترین شیوهها برای تعامل با نقشه ناوبری در برنامه شما را توضیح میدهد.
هر زمان که امکان دارد، به جای NavigationView از SupportNavigationFragment استفاده کنید.
SupportNavigationFragment یک wrapper برای راحتی مدیریت فراخوانیهای چرخه حیات NavigationView است، بنابراین نیازی نیست که خودتان این فراخوانیهای مجدد را مدیریت کنید. این روش کمتر مستعد خطا است و روش ترجیحی برای استفاده از Navigation در برنامه شماست. هنگام استفاده از SupportNavigationFragment ، مطمئن شوید که رویدادهای چرخه حیات NavigationView فراخوانی نمیکنید.
اگر از NavigationView استفاده میکنید، هنگام فراخوانی متدهای چرخه عمر، از ترتیب دقیق استفاده کنید.
NavigationView میزبان نقشه ناوبری است و رویدادهای چرخه حیات را به عنوان فعالیتها و قطعات اندروید به دقت دنبال میکند و هنگام فراخوانی این رویدادهای چرخه حیات، اقدامات خاصی را انجام میدهد. NavigationView مقداردهیهای اولیه متعددی را در NavigationView#onCreate و NavigationView#onStart و پاکسازیها را در NavigationView#onStop و NavigationView#onDestroy و همچنین هنگام پردازش سایر رویدادهای چرخه حیات انجام میدهد.
متدهای چرخه حیات NavigationView همان معنایی را دارند که برای activityها یا fragmentهای اندروید دارند. برای مثال، onCreate() از NavigationView تقریباً به callbackهای چرخه حیات از activity یا fragment اندروید ترجمه میشود و باید توسط آنها فراخوانی شود. از آنجایی که callbackهای چرخه حیات NavigationView بر اساس callbackهای چرخه حیات اندروید هستند و به همان ترتیب فراخوانی میشوند، ترتیب دقیق این متدهای NavigationView مورد نیاز است. در غیر این صورت، ممکن است با نشت حافظه ، خطاهای UI، عدم بهروزرسانی مکان و سایر مشکلات مواجه شوید.
برای اطلاعات بیشتر در مورد چرخه حیات فعالیت اندروید، به بخش مفاهیم چرخه حیات فعالیت در مستندات توسعهدهندگان اندروید مراجعه کنید.
جدول زیر نشان میدهد که چه زمانی باید سایر متدهای چرخه حیات، پس از متدهای چرخه حیات مشخص شده، فراخوانی شوند:
| روش چرخه عمر | در هر کجای چرخه حیات اکتیویتی فراخوانی میشود | پس از کدام متد چرخه حیات فراخوانی میشود |
|---|---|---|
onConfigurationChanged() | زمانی که رابط کاربری در پیشزمینه قرار دارد و پیکربندی تغییر میکند، فراخوانی میشود. | همیشه بعد از onStart() |
onTrimMemory() | زمانی که یک فعالیت در پسزمینه است، فراخوانی میشود. | همیشه بعد از onPause() |
onSaveInstance() | قبل از اینکه یک اکتیویتی از بین برود، فراخوانی میشود. | همیشه بعد از onStop() |
این متدهای چرخه حیات را بدون فراخوانی متد پایانی مربوطه، چندین بار فراخوانی نکنید. علاوه بر این، به خاطر داشته باشید که اگر برخی از این فراخوانیهای چرخه حیات اندروید توسط خود برنامه مدیریت میشوند و NavigationView پس از ایجاد یا شروع به فرگمنت اضافه میشود، برنامه باید خود متدهای خاص را به ترتیب صحیح فراخوانی کند تا بتواند SDK ناوبری را به درستی مقداردهی اولیه کند.
برای راهنمایی بیشتر در مورد استفاده از این روشها، به نسخه آزمایشی برنامه Navigation SDK مراجعه کنید.
اگر از NavigationView استفاده میکنید، رویدادهای چرخه حیات را از activity یا fragment فراخوانی کنید، نه هر دو.
برای حفظ ترتیب دقیق متدهای چرخه حیات، این رویدادها را از فراخوانیهای چرخه حیات activity یا fragment که این رویدادها را به ترتیب دریافت میکنند، فراخوانی کنید. این رویکرد تضمین میکند که برنامهها نیازی به هماهنگی بین fragmentها و activityها نداشته باشند و باعث فراخوانیهای تکراری نشوند.