问题描述
我对Kotlin的Clean Architecture真的很陌生,我有一些疑问。 我按照本教程https://android.jlelse.eu/mvp-with-rxjava2-room-koin-6f9492b94500进行了学习,在很多新概念上都很清楚。
但是我不确定用例(交互器是别的名字吗?)
我正在使用Room,Retrofit,RxKotlin和Koin进行MVP开发。 我从API提取了一些数据,并且想将这些数据插入BDD后再进行处理。
UserResponseDAO.kt
@Dao
interface UserResponseDAO {
@Insert
fun insertUser(vararg user: UserResponse) : Completable
}
UserResponsePresenter.kt
class UserResponsePresenter(private val iUserResponseInteractor: IUserResponseInteractor): IUserResponsePresenter,viewmodel() {
override fun insertUserResponse(userResponse: UserResponse) {
iUserResponseInteractor.insertUserResponse(userResponse)
}
}
UserResponseInteractor.kt
class UserResponseInteractor(private val iUserResponseRepository: IUserResponseRepository) :
IUserResponseInteractor {
override fun insertUserResponse(userResponse: UserResponse) {
iUserResponseRepository.insertUserResponse(userResponse)
}
}
UserResponseRepository.kt
class UserResponseRepository(private val userResponseDAO: UserResponseDAO) :
IUserResponseRepository {
private val appUtility: AppUtility by inject()
@SuppressLint("CheckResult")
override fun insertUserResponse(userResponse: UserResponse) {
userResponseDAO.insertUser(userResponse)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
{
when (userResponse.profilePOJO.role) {
Role.CLIENT -> appUtility.redirectToMainPage(MainClientPageActivity())
Role.TATTOOIST -> appUtility.redirectToMainPage(MainTattooistActivity())
else -> return@subscribe
}
},{ Log.d("RxJava","Insert Error") }
)
}
}
AppUtility.kt
class AppUtility(var context: Context) {
fun redirectToMainPage(activity: Activity) {
val intent: Intent = Intent(context,activity.javaClass)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
context.startActivity(intent)
}
}
我不知道我UserResponseRepository.kt中subscription()中的代码是否在正确的位置。考虑到我需要Context来启动新的Activity,是否以正确的方式注入它?
谢谢您的任何建议!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)