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

آیا تاکنون با پروژهای سروکار داشتهاید که نتوانید بفهمید یک وابستگی Dagger از کجا آمده است؟ آیا از یک سازنده @Inject میآید؟ یا ممکن است از یک متد @Binds یا @Provides بیاید. آیا یک qualifier دارد یا نه؟ امکان یافتن پاسخ همه این پرسشها تنها با یک کلیک وجود دارد. با ما همراه باشید تا با روش پشتیبانی از ناوبری Dagger در اندروید استودیو آشنا شوید.
جدیدترین نسخه اندروید استودیو (4.1) یک آیکون حاشیهای جدید ارائه کرده است که امکان ناوبری آسان بین کد مرتبط با Dagger را فراهم میسازد. این موارد شامل ارائهدهندگان و مصرفکنندگان وابستگی، کامپوننتها، زیرکامپوننتها و ماژولها میشود. ضمناً میتوانید همین اطلاعات را در Find usages نیز پیدا کنید.
چنان که میبینید، ناوبری در گراف Dagger اپلیکیشن اندرویدی اینک بسیار آسان شده است. اینک برای دانستن این که یک وابستگی از کدام ارائهدهنده متد ناشی میشود، تنها به یک کلیک نیاز دارد.
نکته: این کارکرد در نسخههای جدیدتر بهبود بیشتری مییابد و نامگذاری و آیکونها تغییر خواهند یافت. در ادامه این مقاله در خصوص این تغییرها بیشتر توضیح خواهیم داد.
کاربرد عملی
از اندروید استودیو 4.1 نسخه Canary 7 به بعد یک آیکون حاشیهای جدید در پروژههایی که از Dagger استفاده میکنند دیده میشود:
معیار این نسخه Canary به صورت زیر است:
- آیکون با فلش رو به بالا زمانی نمایش مییابد که نوع ارائه شده باشد، یعنی جایی که وابستگی از آنجا میآید.
- آیکون با فلش رو به پایین زمانی نمایش مییابد که نوع به صورت یک وابستگی استفاده شده باشد.
در ادامه برخی مثالهای کارکرد جدید را با استفاده از شاخه Dagger نمونه کدهای معماری ریپوی گیتهاب (+) بررسی میکنیم.
دانستن اینکه وابستگی از کجا میآید
فرض کنید کلاسی وجود دارد که میتواند از سوی داگر تزریق شود، اگر روی آیکون حاشیهای با فلش رو به بالای یک وابستگی کلیک کنید، به متدی میروید که اعلام میکند داگر طور باید آن نوع را ارائه کند.
در مثال زیر TasksViewModel یک وابستگی روی TasksRepository دارد. با کلیک کردن روی آیکون حاشیهای به متدهای @Binds در AppModuleBinds میرویم که TasksRepository را ارائه میکنند:
کار با qualifier
در مثال فوق اگر وابستگی با استفاده از یک qualifiers عرضه شده باشد، شما را دقیقاً به متد ارائهدهنده میبرد.
DefaultTasksRepository به یک TasksDataSource ارائه شده با یک qualifier وابسته است. با کلیک روی آیکون حاشیهای به متد qualifier میروید که آن نوع را با qualifier ارائه میکند:
این نوع در کجا به عنوان وابستگی استفاده شده است؟
زمانی که متدی دارید که به داگر اعلام میکند چطور یک وابستگی را ارائه دهد، میتوانید روی آیکون حاشیهای فلش رو به پایین کلیک کنید تا به جایی که وابستگی استفاده شده است بروید. اگر وابستگی از سوی بیش از یک مصرفکننده استفاده شده باشد، میتوانید مصرفکنندهای که میخواهید ببینید را از یک لیست انتخاب کنید.
در پروژه اخیر DefaultTasksRepository از سوی ViewModel-های مختلف استفاده شده است. برای دانستن این موضوع میتوانید روی آیکون حاشیهای متد ارائهدهنده کلیک کنید که در این مورد @Binds است.
اطلاع از اینکه کدام کامپوننت از زیرکامپوننت خاصی استفاده میکند
با فرض وجود یک زیرکامپوننت خاص، با کلیک روی آیکون حاشیهای میتوانیم کامپوننتی که از این زیرکامپوننت استفاده میکند را ببینیم:
یافتن کاربردها
اطلاعاتی را که در بخشهای قبل توضیح دادیم، میتوانید با استفاده از قابلیت Find Usages در اندروید استودیو نیز مشاهده کنید. در این زمان این قابلیت صرفاً روی فایلهای .java عمل میکند، اما پشتیبانی از فایلهای کاتلین نیز در نسخههای بعدی اندروید استودیو اضافه خواهد شد.
اگر این را در یک پروژه دیگر Dagger با فایلهای.java امتحان کنید، چیزی مشابه زیر میبینید:
قابلیتهای نسخههای بعدی
در نسخههای Canary اندروید استودیو قابلیتهای جدید دیگری عرضه خواهند شد که فهرست برخی از آنها به شرح زیر است:
- پشتیبانی از پروژههای چندماژولی
- پشتیبانی از Find Usages در فایلهای کاتلین
- شناسایی کلاسهای object کاتلین که به طور معمول برای تعریف ماژولهای داگر استفاده میشوند.
- دانستن زیرکامپوننتهای یک کامپوننت
اگر این مطلب برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای برنامهنویسی اندروید
- مجموعه آموزشهای برنامهنویسی
- آموزش برنامهنویسی اندروید (Android) – مقدماتی
- تنظیم ماژول های اندروید با Dagger 2 — به زبان ساده
- Dagger 2 در اندروید (بخش اول) — راهنمای پیشرفته
==