服务生命周期中的超级调用

super call in Service lifecycle

当我阅读这篇文章时 link https://developer.android.com/guide/components/services#LifecycleCallbacks,I 看到了这个声明

注意:与activity生命周期回调方法不同,您不需要调用这些回调方法的超类实现。

谁能解释为什么不需要调用超类以及在什么情况下我们可以添加超类实现?

谢谢

在 activity 生命周期中进行回调是因为我们需要 运行 Activity [的那些方法上的现有代码] class.

例如

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate( savedInstanceState );
        // your code
    }

在这个方法中我们说编译器不仅运行我们的代码而且onCreate方法中的现有代码Activityclass。现有代码负责将 context 分配给 activity、设置 actionBar 等。如果您想了解更多有关现有 onCreate 的信息方法代码,您可以在 Activity class.

中浏览该方法

但在 Service 的情况下,我们不需要 运行 现有代码(当然那些方法中没有现有代码)并且系统本身会处理做什么,只通知我们服务正在经历什么生命周期,以便我们可以根据服务所在的生命周期进行编码。

例如

    @Override
    public void onDestroy() {
        // You can make a toast here to notify the user that the service has ended
    }

Serviceclass中的这个方法通知服务正在被销毁。您可以在 Service class 中浏览此方法,并查看没有在该方法上编写代码。所以我们可以得出结论,该方法只是通知我们有关服务的销毁。

但您仍然可以对该方法进行超级调用,如下所示

   @Override
    public void onDestroy() {
        super.onDestroy();
    }

但是我们在代码的运行ning 中没有任何变化,因为super class 中的onDestroy 方法是空的。更准确地说,我们不需要现有代码(在这种情况下它是空的)来完成我们期望的事情。

最后一个问题,

当您想要 运行 现有代码时,您应该实施超级调用。如果你只是想知道是否调用了该方法并且你不想 运行 现有代码而只想你的子代码class 你不应该实现超级调用