为什么java Android中的super.onDestroy()在析构函数中位于顶部?

为什么java Android中的super.onDestroy()在析构函数中位于顶部?,java,android,destroy,Java,Android,Destroy,根据哪个逻辑执行super.ondestory()在析构函数中位于顶部?例如: protected void onDestroy() { super.onDestroy(); releaseMediaPlayer(); } 而不是: protected void onDestroy() { releaseMediaPlayer(); super.onDestroy(); } 像C++、Obj-C、Pascal等?< /P> <

根据哪个逻辑执行
super.ondestory()在析构函数中位于顶部?例如:

protected void onDestroy() {        
    super.onDestroy();
    releaseMediaPlayer();
}
而不是:

protected void onDestroy() {        
    releaseMediaPlayer();
    super.onDestroy();
}

像C++、Obj-C、Pascal等?< /P> < P>你有什么问题?无论哪种方法都可以,这取决于您是否希望在调用超类的

ondestory()
之前调用它。通常我认为这在android中并不重要

而且,
ondestory()
不是析构函数。它实际上并没有破坏这个物体。它只是一个基于特定状态调用的方法。因此,在超类的
onDestroy()
运行并返回后,您的实例仍然处于活动状态,并且非常好


*最有可能的是,android可以随时终止该活动,但您可以假设它仍然存在。

这实际上取决于您想在
onDestroy中执行什么操作。这就是super.ondestory所做的(按顺序):

  • 关闭活动正在管理的所有对话框
  • 关闭活动正在管理的所有游标
  • 关闭任何打开的搜索对话框

如果你放在onDestroy中的逻辑与android做的这三件事有关,那么你可能不得不担心顺序。否则,在大多数情况下,这并不重要。

在上的ThreadSample.zip中,onDestroy()中有一条注释


因此,当使用广播接收器时,超级必须在最后运行。

因为我们是从基本android类扩展而来的,所以在创建过程中让父类先创建并初始化自己,在关闭/停止组件时让子类先取消初始化并释放资源总是一个好方法。这是建议遵循的方法。然而,这完全取决于用例和场景

public void onCreate(Bundle bundle){
   super.onCreate(bundle);
   //perform child class initializations.
}

public void onDestroy(){
   //perform uninitialization and free resource
    super.onDestroy();
}

例如C++中,在清理私有对象之后,你会破坏超级类。如果你先破坏超级类,我认为这不是一个好的做法,我甚至认为应用程序会崩溃,因为实例会被破坏!正如他所说,这不是析构函数,只是告诉组件清除它想要清除的任何状态。调用onDestroy()后,对象仍然保留。一般来说,顺序无关紧要,也不会导致崩溃。您从哪里找到这些信息的?我对服务等很好奇。Android是OpenSouce。。。只要看一下源代码:PIt是有意义的。如果你想做任何事情,你肯定不想在一个半毁(清理)的对象上做。
public void onCreate(Bundle bundle){
   super.onCreate(bundle);
   //perform child class initializations.
}

public void onDestroy(){
   //perform uninitialization and free resource
    super.onDestroy();
}