Android 当应用程序处于后台/最小化状态时,不会触发回调

Android 当应用程序处于后台/最小化状态时,不会触发回调,android,kotlin,mvvm,google-cloud-firestore,repository,Android,Kotlin,Mvvm,Google Cloud Firestore,Repository,我已经实现了MVVM体系结构,当应用程序位于前台时,它运行良好,但当我最小化应用程序时,存储库会将数据发送到视图模型,并将视图模型发送到活动,但在我恢复应用程序之前不会调用回调。 方法是存储库: //方法,并侦听连接集合 fun connects(driverId: String, connectsSnapshot: (QuerySnapshot?) -> Unit) { if (connectsRef!=null){ connectsRef?.remove()

我已经实现了MVVM体系结构,当应用程序位于前台时,它运行良好,但当我最小化应用程序时,存储库会将数据发送到视图模型,并将视图模型发送到活动,但在我恢复应用程序之前不会调用回调。 方法是存储库:

//方法,并侦听连接集合

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")
         }
    }
val mutableLiveDataForConnect=MutableLiveData()
val mObserverForConnect:Observer=Observer{
getView().connectListener(it)
}
趣味getConnectsData(driverId:String)
{
repository.connects(driverId){
mutableLiveDataForConnect.postValue(it)
System.out.println(“==>ViewModel”)
}
}

这一个也会被调用,但当应用程序最小化时,我无法接收有关活动的数据。当我将代码移动到Activity时,它可以正常工作,但我需要将代码移动到存储库。

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


我不完全清楚你想做什么。为什么有必要在任何人都看不到的情况下更新活动?听起来您正在尝试在活动/观察者中执行MVVM不应该执行的操作。

获取实时数据的目的是查看,而主视图在后堆栈中始终保持打开状态。同样的代码在其他应用程序中也可以正常工作,但在这个应用程序中不行。有没有办法做到这一点??