2017-08-20 24 views
1

私はAndroidのfirebaseで始まったばかりです。私はonStartとonStopのいくつかを理解できません。Androidのfirebase onStartとonStopの説明

このコードを停止方法で使用する必要があるのはなぜですか?なぜリスナーを削除する必要がありますか?

@Override 
protected void onStop() { 
    super.onStop(); 
    Log.d(TAG, "onStop: "); 
    if(mAuthStateListener != null) 
     mAuth.removeAuthStateListener(mAuthStateListener); 
} 

さらに、onCreateではなくonStartメソッドでmAuthリスナーを設定する利点は何ですか?

@Override 
protected void onStart() { 
    super.onStart(); 
    Log.d(TAG, "onStart: "); 
    mAuth.addAuthStateListener(mAuthStateListener); 
} 

これは、Firebase - >認証のデモでどのように酷評されたかです。

+0

デモにリンクできますか、より多くの文脈が必要ですか? – weston

+0

デモはfirebase用のアンドロイドスタジオのアシスタントウィンドウからのものです。ここに写真があります:http://imgur.com/a/wkwKh –

答えて

4

mAuthは、何かが発生したときに通知するために、追加したすべてのリスナーを追跡し続けるため、リスナーを削除する必要があります。

リスナーをリストから削除すると、リストアが停止しても、アクティビティは停止しています。アクティビティが停止したときに認証イベントを待機する必要はありません。

なぜリスナーをonStartに追加するのですか?アクティビティのライフサイクルに応じので

onCreateonDestroyが互いに対応している

enter image description here

onStartonStopは、互いに対応します。

onCreateにリスナーを追加し、onStopでリスナーを削除した場合、再起動時にonCreateが呼び出されないため、リスナーはアクティビティの再起動時に追加されません。 onStartです。

+0

これは本当に良い説明でした。あともう一つだけ。リスナーを削除する唯一の理由は、アプリが停止してもリスナーが使用されないためです。私たちがそれを削除しなかったらどうなりますか?私は何もないと思います。 –

+0

その後、たくさんのリスナーがいると、多くのメモリが使用される可能性があります。アクティビティが停止したときにメモリを解放してみませんか? @MiljanRakita – Sweeper

+0

ええ、そうです。あなたは正しいです、答えに感謝してください。 @Sweeper –

関連する問題