从另一个服务启动服务

Posted

技术标签:

【中文标题】从另一个服务启动服务【英文标题】:Starting service from another service 【发布时间】:2015-03-22 09:25:06 【问题描述】:

我正在尝试从另一个服务启动一个服务。但想知道出了什么问题。代码是这样的

class Service1 extends GCMBaseIntentService 

    @Override
    protected void onMessage(Context arg0, Intent intent) 
        Toast.makeText(getApplicationContext(), "Hello", Toast.LENGTH_LONG).show();
        Intent service = new Intent(getApplicationContext(), Service2.class);
        startService(service);
    

Service2 是

class Service2 extends Service 

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) 
        // TODO Auto-generated method stub
        Toast.makeText(getApplicationContext(), "Service Started", Toast.LENGTH_LONG).show();
    

我在 Service1 中获得了 Toast “Hello”,但没有从 Service2 中获得 Toast “Service Started”

【问题讨论】:

尝试使用Service1.thisgetBaseContext() 而不是getApplicationContext() 以启动Service1 你有什么错误吗? 我尝试了很多可能性,包括这个,但没有任何效果 不...我没有收到任何错误。什么都没有发生.. 【参考方案1】:

您应该使用 Service1.thisgetBaseContext() 而不是使用 getApplicationContext() 。您是否在 androidManifest 中声明了您的 Service2?

【讨论】:

Ohhhh.... Manifest...我应该为此打自己一百次...无论如何,非常感谢:) 别担心!我想我们都非常了解这些情况;) Manifest 肯定总能得到你,但说真的,我在处理服务时也遇到了 getApplicationContext() 的问题?这对我来说很奇怪,因为在 Service 中考虑 Application Context 似乎很自然,但是是的,如果处理 Service 甚至是 BroadcastReceivers,我总是使用 getBaseContext()

以上是关于从另一个服务启动服务的主要内容,如果未能解决你的问题,请参考以下文章

春季启动部署

如何从另一个桌面应用程序控制 Windows 服务

从 cron 重新启动弹性 beanstalk 应用程序服务器

C# 错误 1053 服务没有及时响应启动或控制请求

express.js 服务器在正在使用的端口上启动

从另一个容器访问 docker 容器