使用 LiveData 和 ObserveForever 递归调用惰性值

rdi*_*z82 5 android kotlin android-livedata android-architecture-components

我有以下类结构:

活动 > ViewModel > DataManager > ApiManager

我正在尝试用于LiveData在层之间共享对象。DataManager 和 ApiManager 是 kotlin,object所以它们没有任何对活动的引用。为了实现“回调”,我observeforever在 DataManager 和 ApiManager 中使用以下方式:

fun doStuff(inParam:String, inParam2:String)LiveData<Pair<String,Boolean>>{
   var reponse:MutableLiveData<Pair<String,Boolean>> = MutableData()
   val requestResponse: LiveData<Pair<String, CustomType>>= ApiManager.doStuff(inParam1, inParam2)
   requestResponse.observeForever {
        //Do some task here
        response.value = Pair("ok",true)
   }
   return response
} 
Run Code Online (Sandbox Code Playgroud)

在实践中,它按预期工作,通过这种结构,我使用LiveData. 导出已签名的 apk 时出现问题。在此过程中VitalLint,尽管生成了已签名的 apk,但当我阅读时,它显示指向活动的以下错误LiveData

Error:java.lang.IllegalStateException: Recursive call in a lazy value under LockBasedStorageManager@351242ee (<unknown creating class>)
Run Code Online (Sandbox Code Playgroud)

该错误与此行相关联:

val status:Boolean = either.second
Run Code Online (Sandbox Code Playgroud)

我怀疑这可能与我实现观察的方式有关,observeForever但我没有找到任何其他方式来观察,而我的对象类中没有生命周期感知组件。有任何想法吗?