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

什么是正确的方式调用super.onStop(),即当注销一个监听器?

我见过:

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

要么

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

Solutions Collecting From Web of "调用super.onStop()注销侦听器时的正确方法"

你应该总是先调用它,主要是作为一种保护机制:如果有一个exception,那么超类实例方法已经被调用。

没关系。 除非你依赖于一些继续被初始化的状态(并且就任何框架类而言,我可以保证你没有),你可以在超类之后自由调用它。 如果超类抛出一个exception,你的整个应用程序将会崩溃,所以没有理由以这种方式订购一种或另一种。

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

从我读到的方法,你重写的是组件销毁(onPause(),onStop(),onDestroy()等)的一部分,你应该先做你的工作,并作为最后一件事链接到超类。 这样,如果Android清理了一些你的工作所依赖的东西,那么你将首先完成你的工作。