पर निर्भर करता है मुझे यहां एक अजीब समस्या है, और मुझे पूरा यकीन नहीं है कि मैं जो कर रहा हूं उसे अनुमति क्यों नहीं है। मैं निम्नलिखित मॉड्यूल मिल गया है:डैगर 2 सिंगलटन घटक सिंगलटन
@Module
public final class AppModule {
private Context mContext;
@Provides
@Singleton
@AppContext
public Context provideContext() { return mContext; }
}
@Module
public final class NetModule {
@Provides
@Singleton
public OkHttpClient provideOkHttp() {
return new OkHttpClient.Builder().build();
}
}
विभिन्न कारणों से, मैं (मूल रूप से अपने प्रोजेक्ट संरचना की वजह से) एक ही घटक में इन दो मॉड्यूल के लिए नहीं करना चाहती।
@Singleton
@Component(modules = AppModule.class)
public interface AppComponent {
@AppContext Context appContext();
}
@Singleton
@Component(dependencies = AppComponent.class, modules = NetModule.class)
public interface NetComponent {
Retrofit retrofit();
}
लेकिन जब मैं इस संकलन करने का प्रयास करें, मैं निम्नलिखित त्रुटि संदेश मिलता है:: तो मैं निम्न घटक बनाने की कोशिश की
Error:(12, 1) error: This @Singleton component cannot depend on scoped components: @Singleton com.myapp.service.dagger.AppComponent
मुझे समझ में क्यों अलग स्कोप के आधार पर होगा बुरा और अस्वीकृत हो। लेकिन सिंगलटन पर निर्भर क्यों है - सिंगलटन पर अनुमति नहीं है? ऐसा लगता है कि इसे काम करना चाहिए, क्योंकि मैं जो कुछ कर रहा हूं वह भाई घटकों को घोषित कर रहा है। मैं क्या खो रहा हूँ?
हम्म, मैं देखता हूं - यह समझ में आता है। लेकिन यहां स्पष्ट फॉलो-अप प्रश्न पूछने के लिए, मैं इसे लेता हूं, यह सीमा तब भी सभी अतिरिक्त कस्टम स्कोपों पर लागू होगी, है ना? यदि मैंने "PerAplication" दायरा बनाया है, तो मैं इसे NetComponent/मॉड्यूल पर लागू कर सकता हूं और ठीक हो सकता हूं। लेकिन अगर मैं नेटकंपोनेंट पर निर्भर एक और घटक बनाना चाहता था, तो मुझे अभी तक एक और गुंजाइश की आवश्यकता होगी (क्योंकि जीवन चक्र फिर से थोड़ा अलग हो सकता है)। क्या वो सही है? – tmtrademark
हाँ, यह सही है। – ootinii