DI 的新手。假設在模塊 ABC 中有一個介面 XYZ,它被主應用程式專案用作依賴項。我想將該介面 XYZ 注入到主專案中的 MainActivity 中。請在下面查看我的嘗試方式。
ABC 模塊內容
XYZ
interface XYZ {
fun init()
}
TestView類實作介面
class TestView: XYZ {
override fun init(){
}
}
主要專案內容
應用模塊類
@Module
@InstallIn(SingletonComponent::class)
object AppModule {
@Provides
fun xyz(): XYZ = TestView()
}
主要活動
@AndroidEntryPoint
class MainActivity : AppCompactActivity() {
@Inject lateinit var xyz : XYZ
override onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
xyz.init()
}
}
- 如果這有什么問題,請告訴我。
- 如果我對另一個類使用相同的介面,讓我們說TestView2并在主專案的另一個活動中使用它。我也可以在AppModule類中提供該視圖嗎?如果是,我如何將它與第一個區分開來,因為兩者都將使用相同的界面?
提前致謝。
uj5u.com熱心網友回復:
我不是高級開發人員,所以請對我的話持保留態度;)
如果這有什么問題,請告訴我。
是和否(見下文)
它會起作用,有些人更喜歡以這種方式提供界面,
但是最好使用@Binds(它生成的代碼更少,這使您的應用程式更小并且構建時間更快)
你可以在這里找到如何使用它
如果我對另一個類使用相同的介面,讓我們說 TestView2 并在主專案的另一個活動中使用它。我也可以在 AppModule 類中提供該視圖嗎?如果是,我如何將它與第一個區分開來,因為兩者都將使用相同的界面?
如果您創建 2 個回傳相同型別的提供方法,匕首將不知道使用哪個方法來提供您的依賴項,這就是為什么您可以命名您的提供者(使用 @Named 注釋),您可以在此處找到更多相關資訊
(另外,只是評論:不再真正推薦在一個應用程式中使用多個活動,我個人反對)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/534424.html
上一篇:如何使用JetpackCompose為孩子禁用布局修改器
下一篇:如何并排設定影像視圖和文本視圖?
