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

お役に立てば幸いですFirebaseのチームメンバーからシングルトンを使用することを推奨しています。一例を示す。 –

+0

この場合、シングルトンよりもブーリアンが良いと思います。シングルトンは、アプリケーションが閉じられた後、長い時間メモリに留まります。しかし、答えに感謝、私はそのスレッドを見ていない –

答えて

0

私はあなたがこのコードを使用してrecomand:

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

は(https://github.com/firebase/quickstart-android/issues/15)[ここで説明]それは、この問題がある

+0

それは動作します!私はSplashActivityを呼び出すたびに "calledAlready"をfalseに設定するたびに使い物にならないかもしれませんが、onCreateの外側に置きます。ありがとう! –

0

アプリをデバッグモードで実行します。 SplashActivity onCreate()でブレークポイントを設定すると、アプリケーションをクラッシュさせるユースケースが実行されます。 SplashActivity onCreate()は、終了した後にアプリを起動するたびに呼び出されます。これは、アクティビティが終了して再入力されたときの動作を示すためです。

setPersistenceEnabled()を繰り返し呼び出さないようにするには、起動アクティビティのonCreate()の呼び出しに対して、グローバル変数を設定してコールが既に呼び出されていることを示すか、呼び出しを行う必要がありますプロセスごとに1回だけ作成されるContentProviderで使用できます。私は後者をお勧めします。

関連する問題