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

Android 取消注册侦听器时调用super.onStop()的正确方法,android,events,mobile,Android,Events,Mobile,调用super.onStop()的正确方法是什么,即在注销侦听器时 我看到: protected void onStop() { sensorManager.unregisterListener(this); super.onStop(); } 或 您应该始终首先调用它,主要是作为一种保护机制:如果出现异常,则超类实例方法将已经被调用。这无关紧要。除非您依赖于某些继续被初始化的状态(就任何框架类而言,我可以保证您不会),否则您可以在超类之后自由调用它。如果超类抛出异常,您的整个应用程序

调用super.onStop()的正确方法是什么,即在注销侦听器时

我看到:

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


您应该始终首先调用它,主要是作为一种保护机制:如果出现异常,则超类实例方法将已经被调用。

这无关紧要。除非您依赖于某些继续被初始化的状态(就任何框架类而言,我可以保证您不会),否则您可以在超类之后自由调用它。如果超类抛出异常,您的整个应用程序都将崩溃,因此没有理由以这种或那种方式订购


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

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

我一直被告知,
super
应该被称为overrode方法的第一件事(你打算超级!)实际上,我认为这并不重要,这更像是一个“干净的代码”做事的方式。
protected void onStop() {
  super.onStop();  
  sensorManager.unregisterListener(this);
}