0Pricing
Android Academy · درس

الوحدات وموفّرو التبعيات

أخبر Hilt بكيفية إنشاء التبعيات

الوحدات وموفّرو التبعيات درس مجاني في Android Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Android Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Android Academy 4 دروس في المجموع.

إخبار Hilt بكيفية إنشاء الأشياء

يمكن لـ Hilt إنشاء صنف تلقائيًا إذا كان مُنشئه يحمل التعليق التوضيحي @Inject. لكن بالنسبة إلى الواجهات أو الأنواع التي لا تملكها، يجب تعليم Hilt كيفية توفيرها باستخدام Module.

الحقن في المُنشئ

الحالة الأبسط: ضع التعليق التوضيحي على المُنشئ، وسيعرف Hilt كيفية إنشاء الصنف.

class Analytics @Inject constructor(
    private val api: ApiService
)

متى لا يكفي الحقن في المُنشئ؟

لا يمكنك وضع تعليق توضيحي على مُنشئ:

  • واجهة (لا مُنشئ لها).
  • صنف من مكتبة (مثل Retrofit وRoom).

تحتاج هذه الحالات إلى وحدة.

تعريف وحدة

تخبر @Module Hilt بكيفية توفير الأنواع. ويحدد @InstallIn المكوّن (النطاق) الذي تنتمي إليه.

import dagger.Module
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent

@Module
@InstallIn(SingletonComponent::class)
object NetworkModule

استخدام @Provides لأنواع المكتبات

استخدم @Provides على دالة تنشئ الاعتمادية وتعيدها. ويستدعيها Hilt عند الحاجة إلى ذلك النوع.

@Provides
@Singleton
fun provideRetrofit(): Retrofit =
    Retrofit.Builder()
        .baseUrl("https://api.example.com/")
        .build()

يمكن لموفّري الاعتماديات الاعتماد بعضهم على بعض

يمكن أن تتلقى دالة @Provides معاملات؛ ويوفرها Hilt من الرسم البياني.

@Provides
fun provideApi(retrofit: Retrofit): ApiService =
    retrofit.create(ApiService::class.java)

استخدام @Binds للواجهات

لربط واجهة بتطبيق، استخدم @Binds في وحدة مجردة. وهو أكثر كفاءة من @Provides للربط البسيط.

@Module
@InstallIn(SingletonComponent::class)
abstract class RepoModule {
    @Binds
    abstract fun bindRepo(
        impl: NetworkUserRepository
    ): UserRepository
}

@Provides مقابل @Binds

  • @Binds — عندما تكتفي بربط واجهة بتطبيق يستخدم الحقن في المُنشئ. دالة مجردة.
  • @Provides — عندما يتعين عليك تنفيذ شيفرة لإنشاء الكائن (مثل أداة إنشاء).

تحديد النطاق باستخدام @Singleton

ضع تعليقًا توضيحيًا على الموفّر باستخدام نطاق مثل @Singleton لكي يعيد Hilt استخدام نسخة واحدة للتطبيق بأكمله، بدلًا من إنشاء نسخة جديدة في كل مرة.

مطابقة النطاق مع المكوّن

يجب أن يطابق النطاق المكوّن: @Singleton مع SingletonComponent، و@ActivityScoped مع ActivityComponent، وهكذا.

ملخص الوحدات

  • يحدد @Module مع @InstallIn مكان وجود عمليات الربط.
  • ينشئ @Provides الأنواع القادمة من المكتبات أو الأنواع المعقدة.
  • يربط @Binds الواجهات بالتطبيقات.

تحقق سريع

اختبر مدى فهمك للوحدات والموفّرين.

مراجعة

لقد تعلمت:

  • يعمل الحقن في المُنشئ عندما يكون الصنف مملوكًا لك.
  • يعلّم @Module مع @InstallIn Hilt كيفية توفير الأنواع الأخرى.
  • ينشئ @Provides الكائنات القادمة من المكتبات أو الكائنات المعقدة؛ ويربط @Binds الواجهات.
  • طابق النطاقات مثل @Singleton مع مكوّناتها.

الأسئلة الشائعة

هل درس «الوحدات وموفّرو التبعيات» مجاني؟

نعم — نص درس «الوحدات وموفّرو التبعيات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Android Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Android Academy 4 دروس في المجموع.

ماذا ستتعلم في «الوحدات وموفّرو التبعيات»؟

أخبر Hilt بكيفية إنشاء التبعيات تتمرن على Android Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Android Academy؟

لا تُشترط خبرة سابقة. Android Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «الوحدات وموفّرو التبعيات»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Android Academy هذا؟

نعم. كل درس في Android Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. لماذا حقن التبعيات؟
  2. إعداد Hilt
  3. الوحدات وموفّرو التبعيات
  4. الحقن في ViewModels
← العودة إلى Android Academy