调用super.onStop()的正确方法是什么,即取消注册侦听器?
我见过:
protected void onStop() {
sensorManager.unregisterListener(this);
super.onStop();
}
OR
protected void onStop() {
super.onStop();
sensorManager.unregisterListener(this);
}
答案 0 :(得分:9)
您应该首先调用它,主要是作为一种保护机制:如果存在异常,则已经调用了超类实例方法。
答案 1 :(得分:4)
没关系。除非你依赖于某个状态继续被初始化(并且就任何框架类而言,我可以保证你不是)你可以在超类之后自由地调用它。如果超类引发异常,则整个应用程序将崩溃,因此没有理由因此而以某种方式订购。
也就是说,只是为了保持一致性将这些调用放在第一行是很好的,因为这是人们期望看到它们的地方,它将有助于避免您在将来犯错,例如删除方法中的代码并意外删除调用超级班。
答案 2 :(得分:2)
从我读到的,你覆盖的方法是组件破坏的一部分(onPause(),onStop(),onDestroy()等),你应该先做你的工作,然后链接到超类作为最后一件事。这样,如果Android清理了你的工作所依赖的东西,你就会先完成你的工作。