2011-06-25 9 views
10

super.onStop()を呼び出す正しい方法、つまりリスナーを登録解除するときはどうすればいいですか?リスナーを登録解除するときにsuper.onStop()を呼び出す正しい方法

私が見てきた:

protected void onStop() { 
    sensorManager.unregisterListener(this); 
    super.onStop(); 
} 

OR

protected void onStop() { 
    super.onStop(); 
    sensorManager.unregisterListener(this); 
} 
+0

私はいつも、「スーパー」がオーバーロードメソッドの最初のものとして呼び出されるべきであると言われています(あなたがスーパーにしようと思っています)。実際には、それは実際には重要ではないと思います。 "クリーンコード"のやり方。 – Eric

答えて

9

をあなたは常に主に保護メカニズムとして、まずそれを呼び出す必要があります。例外があるならば、スーパークラスのインスタンスメソッドがすでにされていますと呼ばれる。

4

問題ではありません。あなたが初期化され続けるいくつかの状態に依存している場合を除いて(そして、あなたが保証している限り、フレームワーククラスが関係している限り)、スーパークラスの後で自由に呼び出すことができます。スーパークラスが例外をスローすると、アプリケーション全体がクラッシュするため、そのために一方向または他の方法で注文する理由はありません。

これは、一貫性のために、これらの呼び出しを最初の行に置くのは、人々がそれらを見ることを期待している場所であり、将来コードを削除したり、誤ってスーパークラスへの呼び出し。

2

コンポーネントの破壊(onPause()、onStop()、onDestroy()など)の一部であるオーバーライドしたメソッドから、作業を最初に行い、最後にスーパークラスにチェーンする必要があります。そうすれば、あなたの仕事が依存している何かをアンドロイドが浄化する場合には、まずあなたの仕事を完了させるでしょう。

関連する問題