0

我想启动一个服务使用一个活动。具体来说就是IntentService。但是我有两个问题:

开始我的代码时

private void switchService(boolean isEnable, String serviceName){
        Intent intent = new Intent();
        intent.setClassName(TestPhoneServiceActivity.this, serviceName);
        if(isEnable){
            startService(intent);
        }
        else{
            if(isServiceRunning(serviceName)){
                stopService(intent);
                while(isServiceRunning(serviceName)){

                }
                Toast.makeText(this, "Service stopped Successfully!", Toast.LENGTH_LONG).show();
            } 
        }
    }

DDMS 有错误:Unable to start service Intent { cmp=com.xx.android/.AndroidPhoneService }: not found

但路径是对的。那么问题出在哪里呢?而且我还想调用系统服务。我应该将它写入配置文件吗?

然后我使用intent.setClass 启动IntentService。

ActivityManager manager = (ActivityManager)getSystemService(ACTIVITY_SERVICE)

我找不到这个服务对象。IntentService 是否自动完成并销毁?并且 IntentService 的生命周期与其他 Service 不同?

4

1 回答 1

0

您应该像这样传递服务的类而不是服务类的名称

    Intent intent = new Intent();
    intent.setClassName(TestPhoneServiceActivity.this, MyIntentService.class);
    if(isEnable){
        startService(intent);
    }

如果您启动多个相同的 Intent 服务,则 Intent 服务会在工作完成后自行停止,它将在后面排队并按顺序执行,因此 else 块在您的情况下有点多余。

并确保您已在清单中声明了该服务。

于 2012-11-20T09:40:06.230 回答