私は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.sendingSomething.Try#」とその数が増えているログが引き続き表示されます。
質問:stopServiceの呼び出しですでに停止しているのに、なぜそれが存続するのですか?
前もって感謝します!ギレルモ。