デストラクタのsuper.onDestroy();
はどのロジックに基づいて上位に位置しますか?例えば:
protected void onDestroy() {
super.onDestroy();
releaseMediaPlayer();
}
ではなく:
protected void onDestroy() {
releaseMediaPlayer();
super.onDestroy();
}
C++、obj-c、Pascalなどのように?
onDestroy
で何をしたいかに大きく依存します。これはsuper.onDestroyが行うことです(この順序で):
onDestroy
内に配置するロジックが、Androidが行う3つのことと関係がある場合は、順序について心配する必要があります。場合、それは問題ではありません。
Reporting Work Status training のThreadSample.Zipには、onDestroy()にコメントがあります
public void onDestroy() {
...
// Must always call the super method at the end.
super.onDestroy();
}
したがって、おそらく放送受信機を使用する場合、スーパーは最後に行かなければなりません。
Base Androidクラスから拡張しているので、親クラスが作成中に最初に自身を作成および初期化し、子がシャットダウン/コンポーネントの停止:これは推奨されるアプローチですが、ユースケースとシナリオに完全に依存します。
public void onCreate(Bundle bundle){
super.onCreate(bundle);
//perform child class initializations.
}
public void onDestroy(){
//perform uninitialization and free resource
super.onDestroy();
}
あなたの質問は何ですか?どちらの方法でもできます。スーパークラスのonDestroy()
を自分の前に呼び出すかどうかによって異なります。通常、Androidで問題になるとは思いません。
また、onDestroy()
はデストラクタではありません。実際にはオブジェクトを破壊しません。特定の状態に基づいて呼び出されるメソッドです。したがって、スーパークラスのonDestroy()
が実行されて戻った後も、インスタンスはまだ生きていて非常に良好です*。
*ほとんどの場合、Androidはいつでもアクティビティを強制終了できますが、まだそこにあると想定できます。