Firebase - приложение долго не отвечает (из-за синхронизации данных?) - PullRequest
0 голосов
/ 19 марта 2019

Я работаю над приложением, похожим на RunKeeper.

Эта проблема возникает, когда приложение захватило много данных о местоположении, и все данные были сохранены локально из-за отсутствия подключения к Интернету.

Когда я подключаюсь к Wi-Fi через долгое время и открываю приложение, оно отображает значок обработки в течение длительного времени.

    showProcessingIcon()

    userRef.observeSingleEvent(of: .value, with: { snapshot in
        //.... process and display data....

        hideProcessingIcon()    
    }) { (error) in
        //.... handle error....

        hideProcessingIcon()            
    }

Иногда значок обработки пропадает через минуту или около того. Иногда мне приходилось выходить из приложения после ожидания в течение 5 минут или около того, когда значок обработки все еще вращался. Иногда я замечал, что приложение было выгружено во время ожидания завершения обработки (автоблокировка телефона через 1 минуту).

Есть идеи, как этого избежать?

Спасибо.

1 Ответ

1 голос
/ 19 марта 2019

Вы не можете реально предотвратить синхронизацию данных, когда Firebase SDK находится в сети. Если у вас большая ожидающая запись, это займет столько времени, сколько потребуется, чтобы завершить, и будет блокировать другие записи до ее завершения.

Вместо этого вы можете собирать данные в другое хранилище (локальный файл или базу данных) вместо прямой записи в базу данных с помощью SDK. Затем вы можете выбрать, когда эти данные, наконец, будут записаны в базу данных реального времени (но это все равно займет столько же времени).

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