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

为什么有时我们必须在Android中称呼super?

章绪
2023-03-14
问题内容

有时,当我重写方法时,在第一次调用时会出现异常,如下所示:

05-31 21:32:04.266: E/AndroidRuntime(28471): android.support.v4.app.SuperNotCalledException: 
Fragment AnalFragment{41795860 #1 id=0x7f070002} did not call through to super.onDestroy()

为什么我们被迫打电话super.method()?父类有义务是有意义的,但是更重要的是,我们如何知道需要super调用一个方法,而不是等待它崩溃?


问题答案:

为什么我们被迫调用super.method()?

组成Android
SDK的类非常复杂。例如,活动和片段都必须执行许多操作才能正常运行(即管理生命周期,优化内存使用,在屏幕上绘制布局等)。要求客户端调用基类(通常在方法的开头)可确保仍执行这些操作,同时仍为开发人员提供合理的抽象级别。

我们如何知道 函数 方法 需要调用super?

文档应告诉您是否需要这样做。如果不是这样,我会在Google上搜索一些示例代码(或查看API演示…或者更好的方法,查看源代码!)。弄清楚应该不难。



 类似资料:
  • C++20概念的一个特点是,在某些情况下,您必须编写。例如,[expr.prim.req]/3中的这个示例:

  • 问题内容: 在我们的J2EE应用程序中,我们使用EJB-3有状态bean来允许前端代码创建,修改和保存持久性实体(通过JPA-2管理)。 看起来像这样: 非常重要的是,为了避免过早提交,只有方法位于事务内,因此,如果调用,则不会在数据库中插入任何内容。 奇怪的是,在方法中,我们必须调用才能真正访问数据库。实际上,我尝试过发现,我们也可以调用或,以及与“ em有关”的任何东西。 我不明白这一点。与事

  • 问题内容: 每个人都告诉我“使用super.viewDidLoad()因为它就是这样”或“我一直那样做,所以要保留它”,“如果不叫super就是错误的”等。 我只发现了一些有关Objective-C用例的主题,这些主题并没有那么启发性,但是我正在Swift 3中进行开发,所以有什么专家可以给我一个很好的详细解释吗? 这是一种良好实践的案例还是有任何隐藏的影响? 问题答案: 通常,最好为您覆盖的所有

  • 问题内容: 我创建了一个用于显示工具提示的指令: 对应功能: 应用于此: 这是我观点的一部分,由拥有者的控制器处理 为什么必须调用才能将更改应用到,该更改是早先声明和初始化的? 问题答案: 因为附加到事件的回调超出了angular的范围;angular不知道该函数何时运行/结束,因此摘要循环永远不会运行。 调用或告诉angular更新绑定并触发任何手表。

  • 根据文档,newInstance()返回一个T:https://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#newInstance() 所以,如果我有一个返回T的方法,为什么我必须强制转换构造函数的返回。newInstance()到T?