在过去的一天里,我一直在尝试在 kodein 中实现一个自定义范围,我正要扯掉我的头发。我的应用程序基于 2 个活动,一个用于登录,另一个在用户登录时(我将其称为 MainActivity)。我有几个单例服务从我在 MainActivity 中的许多片段中使用的 Firestore 数据库获取数据,我目前正在使用 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 和整个编程都很陌生