Android中的手动依赖注入
Android 是一个基于 Linux 内核的开源操作系统,用于智能手机、平板电脑等移动设备。此外,它是为智能手表和 Android TV 开发的。他们每个人都有一个专门的接口。 Android 一直是最畅销的智能手机操作系统之一。 Android OS 是由 Google 于 2005 年收购的 Android Inc. 开发的。在本文中,我们将了解手动依赖注入。所以首先,在学习 Dagger 依赖注入之前,我们应该知道为什么需要Dagger 这样的框架。在手动依赖注入中,我们手动执行的操作由 dagger 自动完成。因此,让我们通过制作一个需要注册用户的应用程序来理解这一点,将他们的凭据保存在数据库中并向他们发送成功注册的消息。我们将为数据库添加一条日志语句,并发送一条注册成功的消息。
分步实施
第 1 步:创建一个新项目
要在 Android Studio 中创建新项目,请参阅在 kotlin 的 android studio 中创建新项目。
第 2 步:我们将创建三个新的 Kotlin 类
- 类 UserRepo – 保存用户凭据。
- 类 EmailService – 向用户发送电子邮件以进行成功注册。
- class UserRegistrationService – 要注册用户,该类依赖于 UserRepo 和 EmailService 类。
UserRepo 类
Kotlin
class UserRepo {
fun saveUser(email:String,pass:String){
Log.d(TAG,"user data saved")
}
}
Kotlin
class EmailService {
fun send(to: String,from: String,body:String){
Log.d(TAG,"Email sent")
}
}
Kotlin
class UserRegistrationService(
private val userRepo: UserRepo,
private val emailService: EmailService
) {
fun userRegistration(email:String,pass:String){
userRepo.saveUser(email,pass)
emailService.send(email,"abc@gmail.com","")
}
}
Kotlin
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val userRepo = UserRepo()
val emailService = EmailService()
val userRegistrationService = UserRegistrationService(userRepo,emailService)
userRegistrationService.userRegistration("xyz@gmail.com","11111")
}
}
电子邮件服务类
科特林
class EmailService {
fun send(to: String,from: String,body:String){
Log.d(TAG,"Email sent")
}
}
UserRegistrationService 类,因为这个类依赖于 UserRepo 和 EmailService 类。我们需要为它提供它所依赖的类的对象。所以我们创建了一个构造函数来传递其他类的对象,而不是在 UserRegistrationService 类中创建这些对象。这称为手动依赖注入。
科特林
class UserRegistrationService(
private val userRepo: UserRepo,
private val emailService: EmailService
) {
fun userRegistration(email:String,pass:String){
userRepo.saveUser(email,pass)
emailService.send(email,"abc@gmail.com","")
}
}
第 3 步:使用 activity_main.xml 文件
导航到 app > res > layout > activity_main.xml 并将以下代码添加到该文件。下面是activity_main.xml文件的代码。
科特林
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val userRepo = UserRepo()
val emailService = EmailService()
val userRegistrationService = UserRegistrationService(userRepo,emailService)
userRegistrationService.userRegistration("xyz@gmail.com","11111")
}
}
因此我们可以在这里看到如果 UserRegistrationService 类依赖于两个类,我们很容易手动创建它的对象。如果一个类依赖于许多其他类,那么我们可以使用 Dagger 框架进行依赖注入。