取消注册侦听器时正确调用super.onStop()的方法

时间:2011-06-25 23:41:43

标签: android events mobile

调用super.onStop()的正确方法是什么,即取消注册侦听器?

我见过:

protected void onStop() {
  sensorManager.unregisterListener(this);
  super.onStop();
}

OR

protected void onStop() {
  super.onStop();  
  sensorManager.unregisterListener(this);
}

3 个答案:

答案 0 :(得分:9)

您应该首先调用它,主要是作为一种保护机制:如果存在异常,则已经调用了超类实例方法。

答案 1 :(得分:4)

没关系。除非你依赖于某个状态继续被初始化(并且就任何框架类而言,我可以保证你不是)你可以在超类之后自由地调用它。如果超类引发异常,则整个应用程序将崩溃,因此没有理由因此而以某种方式订购。

也就是说,只是为了保持一致性将这些调用放在第一行是很好的,因为这是人们期望看到它们的地方,它将有助于避免您在将来犯错,例如删除方法中的代码并意外删除调用超级班。

答案 2 :(得分:2)

从我读到的,你覆盖的方法是组件破坏的一部分(onPause(),onStop(),onDestroy()等),你应该先做你的工作,然后链接到超类作为最后一件事。这样,如果Android清理了你的工作所依赖的东西,你就会先完成你的工作。