0

一切正常。一旦应用程序正在运行,并且通过多任务查看器按回家并回到应用程序,它就可以正常运行。但是一旦它运行,并且我从抽屉中按下它的图标,它就会崩溃,因为它在运行时再次调用“setPersistenceEnabled()”。那么,如何在启用它之前检查它是否已启用?我的代码:如何确定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

这个问题[这里讨论](https://github.com/firebase/quickstart-android/issues/15)根据Firebase团队成员的建议使用单身。提供了一个例子。 –

+0

我认为在这种情况下,它比单例更好。应用程序关闭后,单身人士会长时间呆在内存中。但谢谢回答,我没有看到这个线程 –

回答

0

我recomand您使用此代码:

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

希望它可以帮助

+0

它的工作原理!我虽然认为这样会毫无用处,因为每次我调用SplashActivity时,它都会再次设置“calledAlready”为false,但我将它放在onCreate之外。谢谢! –

0

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

如果您想防止对setPersistenceEnabled()的重复调用,您必须通过设置某个全局变量来指示它已被调用,或者将调用放在调用启动活动的onCreate()在每个进程只创建一次的ContentProvider中。我建议后者。

相关问题