如何确定是否已启用setPersistenceEnabled?

时间:2017-07-14 01:46:02

标签: java android firebase firebase-realtime-database firebase-authentication

一切运作良好。一旦应用程序运行,我按下主页并通过多任务查看器返回应用程序,它运行良好。但是一旦它运行,我从抽屉里按下它的图标,它会崩溃,因为它再次调用" setPersistenceEnabled()"什么时候它已经运行了。那么,在尝试启用它之前,如何检查它是否已启用?我的代码:

public class SplashActivity extends AppCompatActivity {

private FirebaseUser firAuth;

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


    firAuth = FirebaseAuth.getInstance().getCurrentUser();

    if (firAuth!=null) {
        // User is signed in.
        Intent intent = new Intent(this, Identificador.class);
        startActivity(intent);
        finish();

    } else {
        // No user is signed in.
        Intent intent = new Intent(this, LoginActivity.class);
        startActivity(intent);
        finish();
    }

};


}

2 个答案:

答案 0 :(得分:1)

我建议您使用以下代码行:

private static boolean calledAlready = false;
if (!calledAlready) {
    FirebaseDatabase.getInstance().setPersistenceEnabled(true);
    calledAlready = true;
}

答案 1 :(得分:0)

以调试模式运行您的应用。在你的SplashActivity onCreate()上设置一个断点,一个运行崩溃应用程序的用例。您会看到每次启动应用程序后都会调用SplashActivity onCreate(),因为这是活动在退出并重新输入时的工作方式。

如果你想防止重复调用setPersistenceEnabled(),你必须通过设置一些全局变量来保护它们不要调用你的启动活动的onCreate(),以指示它已被调用,或者调用它每个进程只创建一次的ContentProvider。我建议后者。