首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >java.lang.IllegalStateException:名称为[默认]的FirebaseApp

java.lang.IllegalStateException:名称为[默认]的FirebaseApp
EN

Stack Overflow用户
提问于 2016-05-20 20:07:54
回答 3查看 12.2K关注 0票数 19

我一直收到这个问题..遵循应用程序目录中的google services sdk...saved文件的升级指南。仍然与您相同的错误,但对于数据库...

Caused by: java.lang.IllegalStateException: FirebaseApp with name [DEFAULT] doesn't exist.
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-05-21 04:37:18

你在使用Firebase崩溃报告吗?如果命中的是后台进程,而不是主进程,那么您可能会遇到这个错误。

崩溃报告创建第二个进程(background_crash)来发送崩溃。不幸的是,安卓应用程序中的所有进程都共享一个公共的Application子类,因此您的onCreate方法也在后台进程中运行。尝试初始化数据库,但失败了。

修复方法是确保只有在正确配置Firebase (将在主进程中)时才会运行数据库调用。您可以像这样检查:

@Override
public void onCreate() {
  super.onCreate();
  if (!FirebaseApp.getApps(this).isEmpty()) {
    FirebaseDatabase.getInstance().setPersistenceEnabled(true);
  }
}
票数 32
EN

Stack Overflow用户

发布于 2016-05-21 09:37:42

我通过不在应用程序中放置Firebase的任何东西来解决这个错误。我把它放到MainActivity里了。示例: MainActivity.java

@Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    FirebaseDatabase.getInstance().setPersistenceEnabled(true);
    ...
}

-UPDATE

其他解决方案是创建包含一个FirebaseDatabase实例DatabaseHelper类。

public class DatabaseHelper {
  private static boolean persistenceEnable = false;
  private static FirebaseDatabase mDatabase;


  public static boolean isPersistenceEnable(){
    return persistenceEnable;
  }
  public static FirebaseDatabase getInstance() {
    if (mDatabase == null) {
      mDatabase = FirebaseDatabase.getInstance();
      if(persistenceEnable==true) {
        mDatabase.setPersistenceEnabled(true);
      }
    }

    return mDatabase;
  }
}

使用方式: FirebaseDatabase数据库= DatabaseHelper.getInstance();

票数 4
EN

Stack Overflow用户

发布于 2016-11-14 21:02:38

扩展@Ian Barber的解决方案,您可以尝试此通用检查以跳过为所有非主进程处理自定义Application.onCreate。如果额外的进程不属于您,那么您就不希望运行任何自定义进程。

@Override
public void onCreate() {
    super.onCreate();
    if (FirebaseApp.getApps(this).isEmpty()) {
        // No firebase apps; we are in a non-main process
        // skip custom Application.onCreate
        return;
    }
    // Firebase init only in the main process
    FirebaseDatabase.getInstance().setPersistenceEnabled(true);
    // other code
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37346363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档