Обратный вызов не запускается, когда приложение находится в фоновом режиме / свернуто - PullRequest
0 голосов
/ 16 апреля 2020

Я реализовал архитектуру 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")
         }
    }

этот также вызывается, но я не могу получить данные об активности, когда приложение свернуто. он работает нормально, когда я перемещаю код в acitivty, но мне нужно переместить код в репозиторий.

1 Ответ

1 голос
/ 16 апреля 2020

LiveData не получает новые значения без активного Обозревателя, и когда вы минимизируете свое приложение, Обозреватель приостанавливается, потому что это зависит от жизненного цикла. Как только приложение возвращается на передний план, Observer возвращается в активное состояние, последние данные публикуются в нем, а ваша активность обновляется. Вот как должны работать LiveData и Observers.

Мне не совсем понятно, что вы пытаетесь сделать. Почему необходимо обновить активность, когда она никому не видна? Похоже, вы пытаетесь сделать что-то в упражнении / наблюдателе, чего не должно происходить с MVVM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...