在调用 startService 后立即到达实例

Reaching the instance right after the call to startService

我有以下代码:

Class A extends Service{
   static instance = null;
   onCreate(){
      instance = this;
   }

   public static createInstance(Context context){
      if(instance==null)
         context.startService(new Intent(context, A.class));
      return instance;
   }

第一次调用 createInstance 后,它始终 returns 为空。我从 main activity 的构造函数中调用它。 如何让构造函数从第一次调用就到达实例?

启动服务的正确方法是使用意图。在您的主 activity 中,创建一个意图并使用该意图调用 this.startService

您可能不应该保留任何东西的静态实例,更不用说服务了。 Singleton 是 Android 中需要警惕的模式,因为您的应用程序上下文会被 OS 杀死并重新创建,因此无法知道静态字段是否仍然存在。

考虑到 AndroidServices 的概念,我确信 startService() 的实现涉及异步操作。因此,到 startService() returns 时,系统甚至可能不会调用 onCreate() 方法。这就是为什么 createInstance() 总是 returns null.

我强烈建议根据 official documentation.

使用 Services 而不是单例模式