Мое приложение использует базу данных Firebase в реальном времени, и я установил setPersistenceEnabled (true), чтобы оно продолжало работать, когда устройство отключается.Когда устройство не подключено, все в порядке, все операции, такие как добавление, изменение и удаление данных, могут работать нормально.
Проблема возникает, когда устройство возвращается в режим онлайн после выполнения слишком большого количества операций, например, удаление большого количества данных в автономном режиме.После того, как я вижу, что много данных в моей базе данных реального времени было удалено одновременно, я не могу выполнять операции, такие как добавление и изменение данных, несколько раз (5-10 минут), и это зависит от того, сколько данных я удалил в автономном режиме.Я могу видеть только мою операцию добавления и изменения после этого времени.
Мой вопрос заключается в том, сколько операций Firebase может обрабатывать в автономном режиме и делать все еще плавными, когда он возвращается в оперативный режим, поэтому мое приложение несколько раз не зависало.когда пользователь добавляет и изменяет другие данные? или
есть ли способ сделать это плавным при переходе из автономного режима в онлайн, когда у меня много операций в автономном режиме?
ниже мойкод для обновления моих данных перед их удалением, и в автономном режиме мое приложение может запускать этот блок кода до 100 раз, например, за 1 час:
public void ritase(String number){
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("/vehicles/").child(number);
HashMap<String, Object> childUpdates = new HashMap<String, Object>();
childUpdates.put("ritase/from", from);
childUpdates.put("ritase/to", to);
childUpdates.put("ritase/accept", accept);
childUpdates.put("ritase/userid", userid);
childUpdates.put("ritase/passenger", passenger);
childUpdates.put("ritase/stat", 1);
childUpdates.put("ritase/time_out", time);
childUpdates.put("trips/content/time_out", time);
childUpdates.put("trips/content/stat", 1);
ref.updateChildren(childUpdates);
ref.removeValue();
}
и после того, как мое приложение снова перейдет в оперативный режим, под блокомкода работа зависла на несколько минут.Застрял здесь означает, что я не могу видеть изменения немедленно в моем приложении:
Public void updateStatus(String number){
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("/vehicles/").child(number);
HashMap<String, Object> childUpdates = new HashMap<String, Object>();
childUpdates.put("driver/name", name);
childUpdates.put("driver/nip", nip);
if (PrefHelper.getPref(context,VarConstant.ISBARCODE) == "true") {
childUpdates.put("is_barcode", 1);
} else {
childUpdates.put("is_barcode", 0);
}
childUpdates.put("position/content/location", location);
childUpdates.put("position/content/time_in", time);
childUpdates.put("position/content/time_out", 0);
childUpdates.put("position/content/stat", 0);
childUpdates.put("position/content/username", username);
int status;
if (PrefHelper.getPref(context, VarConstant.TYPE).contains(VarConstant.PERIMETER)) {
status = 0;
childUpdates.put("trips/content/status", status);
childUpdates.put("trips/content/time_start", 0);
childUpdates.put("trips/content/time_stop", 0);
} else {
status = 2;
childUpdates.put("trips/content/status", status);
childUpdates.put("trips/content/time_start", time);
childUpdates.put("trips/content/time_stop", time);
}
ref.updateChildren(childUpdates);
}
Я также пытаюсь использовать обработчик завершения для removeValue (), но он срабатывает очень поздно даже в реальном времени в firebaseБаза данных, данные были удалены.