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中。我建議後者。

相關問題