پشتیبانی از ناوبری Dagger در اندروید استودیو — راهنمای کاربردی

۵۲ بازدید
آخرین به‌روزرسانی: ۱۲ مهر ۱۴۰۲
زمان مطالعه: ۳ دقیقه
پشتیبانی از ناوبری Dagger در اندروید استودیو — راهنمای کاربردی

آیا تاکنون با پروژه‌ای سروکار داشته‌اید که نتوانید بفهمید یک وابستگی Dagger از کجا آمده است؟ آیا از یک سازنده ‌‎@Inject می‌آید؟ یا ممکن است از یک متد ‎@Binds یا ‎@Provides بیاید. آیا یک qualifier دارد یا نه؟ امکان یافتن پاسخ همه این پرسش‌ها تنها با یک کلیک وجود دارد. با ما همراه باشید تا با روش پشتیبانی از ناوبری Dagger در اندروید استودیو آشنا شوید.

997696

جدیدترین نسخه اندروید استودیو (4.1) یک آیکون حاشیه‌ای جدید ارائه کرده است که امکان ناوبری آسان بین کد مرتبط با Dagger را فراهم می‌سازد. این موارد شامل ارائه‌دهندگان و مصرف‌کنندگان وابستگی، کامپوننت‌ها، زیرکامپوننت‌ها و ماژول‌ها می‌شود. ضمناً می‌توانید همین اطلاعات را در Find usages نیز پیدا کنید.

ناوبری Dagger در اندروید استودیو

چنان که می‌بینید، ناوبری در گراف Dagger اپلیکیشن اندرویدی اینک بسیار آسان شده است. اینک برای دانستن این که یک وابستگی از کدام ارائه‌دهنده متد ناشی می‌شود، تنها به یک کلیک نیاز دارد.

نکته: این کارکرد در نسخه‌های جدیدتر بهبود بیشتری می‌یابد و نام‌گذاری و آیکون‌ها تغییر خواهند یافت. در ادامه این مقاله در خصوص این تغییرها بیشتر توضیح خواهیم داد.

کاربرد عملی

از اندروید استودیو 4.1 نسخه Canary 7 به بعد یک آیکون حاشیه‌ای جدید در پروژه‌هایی که از Dagger استفاده می‌کنند دیده می‌شود:

ناوبری Dagger در اندروید استودیو

معیار این نسخه Canary به صورت زیر است:

  • آیکون با فلش رو به بالا زمانی نمایش می‌یابد که نوع ارائه شده باشد، یعنی جایی که وابستگی از آنجا می‌آید.
  • آیکون با فلش رو به پایین زمانی نمایش می‌یابد که نوع به صورت یک وابستگی استفاده شده باشد.

در ادامه برخی مثال‌های کارکرد جدید را با استفاده از شاخه Dagger نمونه کدهای معماری ریپوی گیت‌هاب (+) بررسی می‌کنیم.

دانستن اینکه وابستگی از کجا می‌آید

فرض کنید کلاسی وجود دارد که می‌تواند از سوی داگر تزریق شود، اگر روی آیکون حاشیه‌ای با فلش رو به بالای یک وابستگی کلیک کنید، به متدی می‌روید که اعلام می‌کند داگر طور باید آن نوع را ارائه کند.

در مثال زیر TasksViewModel یک وابستگی روی TasksRepository دارد. با کلیک کردن روی آیکون حاشیه‌ای به متدهای ‎@Binds در AppModuleBinds می‌رویم که TasksRepository را ارائه می‌کنند:

ناوبری Dagger در اندروید استودیو

کار با qualifier

در مثال فوق اگر وابستگی با استفاده از یک qualifiers عرضه شده باشد، شما را دقیقاً به متد ارائه‌دهنده می‌برد.

DefaultTasksRepository به یک TasksDataSource ارائه شده با یک qualifier وابسته است. با کلیک روی آیکون حاشیه‌ای به متد qualifier می‌روید که آن نوع را با qualifier ارائه می‌کند:

ناوبری Dagger در اندروید استودیو

این نوع در کجا به عنوان وابستگی استفاده شده است؟

زمانی که متدی دارید که به داگر اعلام می‌کند چطور یک وابستگی را ارائه دهد، می‌توانید روی آیکون حاشیه‌ای فلش رو به پایین کلیک کنید تا به جایی که وابستگی استفاده شده است بروید. اگر وابستگی از سوی بیش از یک مصرف‌کنند‌ه استفاده شده باشد، می‌توانید مصرف‌کننده‌ای که می‌خواهید ببینید را از یک لیست انتخاب کنید.

در پروژه اخیر DefaultTasksRepository از سوی ViewModel-های مختلف استفاده شده است. برای دانستن این موضوع می‌توانید روی آیکون حاشیه‌ای متد ارائه‌دهنده کلیک کنید که در این مورد ‎@Binds است.

ناوبری Dagger در اندروید استودیو

اطلاع از اینکه کدام کامپوننت از زیرکامپوننت خاصی استفاده می‌کند

با فرض وجود یک زیرکامپوننت خاص، با کلیک روی آیکون حاشیه‌ای می‌توانیم کامپوننتی که از این زیرکامپوننت استفاده می‌کند را ببینیم:

ناوبری Dagger در اندروید استودیو

یافتن کاربردها

اطلاعاتی را که در بخش‌های قبل توضیح دادیم، می‌توانید با استفاده از قابلیت Find Usages در اندروید استودیو نیز مشاهده کنید. در این زمان این قابلیت صرفاً روی فایل‌های ‎.java عمل می‌کند، اما پشتیبانی از فایل‌های کاتلین نیز در نسخه‌های بعدی اندروید استودیو اضافه خواهد شد.

اگر این را در یک پروژه دیگر Dagger با فایل‌های.java امتحان کنید، چیزی مشابه زیر می‌بینید:

ناوبری Dagger در اندروید استودیو

قابلیت‌های نسخه‌های بعدی

در نسخه‌های Canary اندروید استودیو قابلیت‌های جدید دیگری عرضه خواهند شد که فهرست برخی از آن‌ها به شرح زیر است:

  • پشتیبانی از پروژه‌های چندماژولی
  • پشتیبانی از Find Usages در فایل‌های کاتلین
  • شناسایی کلاس‌های object کاتلین که به طور معمول برای تعریف ماژول‌های داگر استفاده می‌شوند.
  • دانستن زیرکامپوننت‌های یک کامپوننت

اگر این مطلب برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

==

بر اساس رای ۰ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
androiddevelopers
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *