一切运作良好。一旦应用程序运行,我按下主页并通过多任务查看器返回应用程序,它运行良好。但是一旦它运行,我从抽屉里按下它的图标,它会崩溃,因为它再次调用" 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();
}
};
}
答案 0 :(得分:1)
我建议您使用以下代码行:
private static boolean calledAlready = false;
if (!calledAlready) {
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
calledAlready = true;
}
答案 1 :(得分:0)
以调试模式运行您的应用。在你的SplashActivity onCreate()上设置一个断点,一个运行崩溃应用程序的用例。您会看到每次启动应用程序后都会调用SplashActivity onCreate(),因为这是活动在退出并重新输入时的工作方式。
如果你想防止重复调用setPersistenceEnabled(),你必须通过设置一些全局变量来保护它们不要调用你的启动活动的onCreate(),以指示它已被调用,或者调用它每个进程只创建一次的ContentProvider。我建议后者。