为什么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();
}