当应用程序 background/Minimized 时回调不触发

Callback is not Trigger when app is is background/Minimized

我已经实现了 MVVM 架构,当应用程序在前台运行时它运行良好,但是当我最小化应用程序时,存储库将数据发送到视图模型并将视图模型发送到 activity 但回调直到我恢复申请。 方法是存储库:

// new order的方法和流程,监听connects集合

fun connects(driverId: String, connectsSnapshot: (QuerySnapshot?) -> Unit) {
    if (connectsRef!=null){
        connectsRef?.remove()
        connectsRef=null
    }
    this.connectsSnapshot = connectsSnapshot
    connectsRef = FirebaseFirestore.getInstance().collection("connects").whereEqualTo("driver_id", UserDto.getInstance().id).whereEqualTo("status", "new").orderBy("created", Query.Direction.DESCENDING).limit(1)
    .addSnapshotListener { snapshots, e ->
        if (e != null) {
            connectsSnapshot (null)
            return@addSnapshotListener
        }
        System.out.println("==>ListnerHit")
        connectsSnapshot (snapshots)
    }
}

这个发送数据到视图模型

val mutableLiveDataForConnect = MutableLiveData<QuerySnapshot>()
    val mObserverForConnect: Observer<QuerySnapshot> = Observer {
        getView().connectListener(it)
    }


 fun getConnectsData(driverId: String)
    {
         repository.connects(driverId){
             mutableLiveDataForConnect.postValue(it)
             System.out.println("==>ViewModel")
         }
    }

这个也被调用,但当应用程序最小化时,我无法在 activity 上接收数据。当我将代码移动到 acitivty 时它工作正常,但我需要将代码移动到存储库。

如果没有活动的观察者,LiveData 不会获得新值,并且当您最小化应用程序时,观察者会暂停,因为它依赖于生命周期。一旦应用程序返回前台,Observer returns 进入活动状态,最新数据将发布到它并且您的 activity 已更新。这就是 LiveData 和 Observers 应该如何工作。

我不太清楚你要做什么。为什么有必要在 activity 对任何人都不可见的情况下更新它?听起来你正试图在 activity/Observer 中做一些 MVVM 不应该发生的事情。