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

时间:2016-07-04 12:46:27

标签: java android

作为标题,

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

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

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

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

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

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

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

((KiahApplication)super.getApplication())
将结果super.getApplication()投放到KiahApplication,即class KiahApplication extends Application

((KiahApplication)super.getApplication()).setServiceRunning(true);
在KiahApplication类上调用setServiceRunning(true);

  

但是Service class的getApplication方法怎么可能知道&返回我的自定义应用程序obj?

因为它是单身人士。在您调用getApplication()的任何地方,它将在任何地方返回相同的内容:KiahApplication实例。可以在Context上调用getApplication()。服务是一个上下文,因此可以调用该方法。

请注意,不需要调用super