【发布时间】:2021-02-03 10:51:06
【问题描述】:
在过去的一天里,我一直在尝试在 kodein 中实现一个自定义范围,但我正要扯掉我的头发。 我的应用程序基于 2 个活动,一个用于登录,另一个在用户登录时(我将其称为 MainActivity)。 我有几个单例服务从 Firestore 数据库中获取数据,我在 MainActivity 的许多片段中使用这些数据,我目前正在使用 Kodein 获取每个服务的单例对象。
我的服务总结:
class TagsService(context: Context): KodeinAware {
override val kodein by closestKodein(context)
val tags: MutableLiveData<ArrayList<Tag>> = MutableLiveData(ArrayList())
// Other stuff fetching data and storing it in tags
}
还有我的 Kodein 应用程序中的服务
bind() from singleton { TagsService(applicationContext) }
在我的片段中,我只需要获取我的 tagsService 类
private val tagsService: TagsService by instance()
现在的问题是,当用户退出时,我必须在这种情况下清理所有标签,等待用户登录,创建一个新的查询等等,很多工作。但是,如果这个服务可以以某种方式被“杀死”,然后在用户登录时再次启动(回到 MainActivity,也没有保存它的最后一个状态,只是一个新对象),那么一切都会自动清理,而无需我编写很多代码。
目标:由于 MainActivity 仅在用户登录并经过正确身份验证时才处于“活动状态”,因此我想将生命周期附加到我的 TagsService 对象,每当 MainActivity 死时它也会杀死我的 tagsService ,然后每当 MainActivity 时“重新初始化”再次“活着”。
如果我很难理解我想要做什么,我非常抱歉,我对 kotlin 和整个编程都很陌生
【问题讨论】:
标签: java android kotlin dependency-injection kodein