为什么android上Service Class的getApplication()仍然可以返回它的子类obj



作为标题,

我在kiahaapplication的自定义服务类中看到了下面的代码,以获取应用程序的Application对象:

((KiahApplication)super.getApplication()).setServiceRunning(true);

但是android.app.Service类的getApplication方法怎么知道&返回我的自定义应用程序对象?

android.app.Service不应该是我的自定义应用程序的一部分,

,它没有记录在应用程序的manifest文件中,manifest文件应该是应用程序成员的定义。

谢谢你的帮助!

super.getApplication()
在超类中调用getApplication,它是android.app.Service

((KiahApplication)super.getApplication())
super.getApplication()的结果强制转换为KiahApplication,即class KiahApplication extends Application

((KiahApplication)super.getApplication()).setServiceRunning(true);
在kiahaapplication类

上调用setServiceRunning(true);

但是Service类的getApplication方法怎么知道&返回我的自定义应用程序对象?

因为它是单例。在任何地方调用getApplication(),它将在任何地方返回相同的结果:kiahaapplication实例。getApplication()可以在上下文中调用。服务是一个上下文,因此可以调用该方法。

注意,调用中的super是不需要的。

最新更新