我有一个Android应用程序。
在一个活动中,我启动了这样的服务:

Intent startIntent = new Intent(_context, HandlingService.class);
_context.startService(startIntent);


HandlingService的定义如下:

public class HandlingService extends IntentService


然后在HandlingService中,我有这个:

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    super.onStartCommand(intent, startId, startId);
    Log.v(ApplicationName,"HandlingService.onStartCommand");
    if ((flags & START_FLAG_RETRY) == 0){
        Log.v(ApplicationName,"Service is restarting");
    }
    return START_STICKY;
}


还有这个:

@Override
protected void onHandleIntent(Intent sourceIntent) {
    Log.v(ApplicationName, "HandlingService.onHandleIntent");
    sendSomething();
}


最后:

protected void sendSomething() {
    while (numberOfTry > 0) {
        numberOfTry++;
        Log.v(ApplicationName,"HandlingService.sending Something. Try# " + numberOfTry);
    }
}


numberOfTry从1开始。

然后从启动服务的活动中,当我单击取消按钮时,我将其称为:

Intent stopIntent = new Intent(CallingActivity.this, HandlingService.class);
CallingActivity.this.stopService(stopIntent);


我看到正在调用HandlingService.OnDestroy,但是我一直在看到带有“ HandlingService.sending Something。Try#”的日志以及数量不断增加的日志。

问题:如果我已经通过调用stopService停止了它,为什么它仍然有效?

提前致谢!吉列尔莫。

最佳答案

documentation for IntentService明确指出您不应在派生类中覆盖onStartCommand()。您可能正在弄乱IntentService的内部机制。

直接从Service派生您的类,或使用IntentService已经给您的框架(用于启动/停止自身)。

10-01 03:26