Как использовать один экземпляр Firestore в приложении android? - PullRequest
0 голосов
/ 09 мая 2020

Я пытаюсь использовать один экземпляр Firestore во всем приложении, потому что при холодном запуске Firebase первый запрос или первые извлекаемые данные занимает некоторое время (например, 2000–3000 мс). Я пробовал иметь объект Firestore как stati c в классе, который расширяет Application, но он показывает предупреждение Lint «Не помещайте Android контекстные классы в поля stati c; это утечка памяти». Я не знаю, куда отсюда go. Пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 09 мая 2020

getInstance () предоставит вам уникальный экземпляр для всего вашего приложения, если вы используете

FirebaseFirestore.getInstance()

или

FirebaseDatabase.getInstance()

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

Вы также можете увидеть реализацию ctrl + click в методе в вашем IDE

@NonNull
  public static FirebaseFirestore getInstance() {
    FirebaseApp app = FirebaseApp.getInstance();
    if (app == null) {
      throw new IllegalStateException("You must call FirebaseApp.initializeApp first.");
    } else {
      return getInstance(app, "(default)");
    }
  }




@NonNull
  public static FirebaseApp getInstance() {
    synchronized(LOCK) {
      FirebaseApp defaultApp = (FirebaseApp)INSTANCES.get("[DEFAULT]");
      if (defaultApp == null) {
        throw new IllegalStateException("Default FirebaseApp is not initialized in this process " + ProcessUtils.getMyProcessName() + ". Make sure to call FirebaseApp.initializeApp(Context) first.");
      } else {
        return defaultApp;
      }
    }
  }
...