2016-03-23 8 views
2

リスナーをリリースする必要がある場合は、私は面白いですか?もし私がそれをしなければ、メモリリークはありますか?リスナーをリリースする必要がありますか?

私のような何かを解放する必要があることを知っている:

@Override 
protected void onResume() { 
    super.onResume(); 
    currentUser.addOnUserUpdateListener(this); 
} 


@Override 
protected void onPause() { 
    super.onPause(); 
    /* will be serious leak memory if don't do this */ 
    currentUser.removeOnUserUpdateListener(this); 
} 

しかし、彼らが漏れ方法について

setNavigationOnClickListener, 
setOnEditorActionListener 
.... 

をしますか?

答えて

2

リークしますか?

上記の単純なケースでは、そうではありません。 Androidフレームワークリスナーを使用すると、ドキュメントで特に指定されていない限り、通常、特別な処理は必要ありません。上記の方法については、特別な取り扱いはありません。

通常、メモリリークは、ガベージコレクタがオブジェクト参照を収集できない場合に発生します。重いオブジェクトへの参照を保持するように、ActivityまたはViewのように簡単に解放することはできません。または暗黙的に親クラスへの参照を持つので、staticとして宣言されていない内部クラスの場合

3

リークしますか?

どのように見えないのかが分かりません。確かめたい場合は、パラメータとしてnullと呼んでください。

関連する問題