当前位置: 首页 > 面试题库 >

为什么Java Android中的super.onDestroy()在析构函数中处于首位?

蒋健
2023-03-14
问题内容

super.onDestroy();析构函数中的哪个逻辑最重要?例如:

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

并不是:

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

像在c ++,obj-c,pascal等中一样?


问题答案:

这实际上取决于您要在自己的工作中做些什么onDestroy。这是super.onDestroy所做的(按此顺序):

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

如果您放入的逻辑onDestroy与android的那三件事有关,那么您可能必须担心顺序。否则,在大多数情况下,都没有关系。



 类似资料:
  • 问题内容: 在Java的构造函数中,如果要调用另一个构造函数(或超级构造函数),则它必须是该构造函数的第一行。我认为这是因为不允许您在其他构造函数运行之前修改任何实例变量。但是,为什么不能在构造函数委派之前使用语句,以便计算另一个函数的复杂值?我想不出任何正当的理由,在一些实际案例中,我编写了一些丑陋的代码来解决此限制。 所以我只是想知道: 有此限制的充分理由吗? 有没有计划在将来的Java版本中

  • 问题内容: 我对此代码有疑问:https : //github.com/reactjs/redux/blob/master/examples/async/containers/App.js 特别: 我猜这是一个两部分的问题。 为什么我需要将句柄更改设置为类的实例,我不能只对handleChange使用静态函数并直接在类中调用它 ? 我不知道这是怎么回事: 谢谢 问题答案: 以相反的顺序回答… 返回

  • 我读到虚拟析构函数必须在具有虚拟方法的类中声明。我只是不明白为什么必须宣布它们是虚拟的。我从下面的例子中知道为什么我们需要虚拟析构函数。我只是想知道为什么编译器不为我们管理虚拟析构函数。关于虚拟析构函数的工作,有什么我需要知道的吗?以下示例显示,如果析构函数未声明为虚拟,则派生类的析构函数不会被调用,这是为什么?

  • 问题内容: 我是Java编程语言的初学者,最近我研究了 构造函数 不能在Java中继承,有人可以解释 为什么 吗? 问题答案: 简而言之,构造函数不能被继承,因为在子类中它具有​​不同的名称(子类的名称)。 您只能执行以下操作: 相反,方法是使用“相同名称”继承的,可以使用。 理由如下:继承构造函数没有多大意义,因为类A的构造函数意味着创建类型A的对象,而类B的构造函数意味着创建类B的对象。 不过

  • 本文向大家介绍请你回答一下为什么析构函数必须是虚函数?为什么C++默认的析构函数不是虚函数?相关面试题,主要包含被问及请你回答一下为什么析构函数必须是虚函数?为什么C++默认的析构函数不是虚函数?时的应答技巧和注意事项,需要的朋友参考一下 将可能会被继承的父类的析构函数设置为虚函数,可以保证当我们new一个子类,然后使用基类指针指向该子类对象,释放基类指针时可以释放掉子类的空间,防止内存泄漏。  

  • 在C中,您可以将许多内容声明为:变量、函数(包括成员函数和运算符)、构造函数,以及从C 1z开始的语句和lambda表达式。但是,声明析构函数会导致错误: 我的问题: 为什么不能将析构函数标记为constexpr 如果我没有提供析构函数,那么隐式生成的析构函数是constexpr吗 如果我声明一个默认析构函数(