2

我创建了一项意向服务。现在我想停止该服务的活动如何停止该服务?我的代码是:

我的活动.java

@Override
public void onCreate(Bundle savedInstanceState) {

Intent intent = new Intent(this, myService.class);
intent.putExtra("myHand", new Messenger(this.myHand)); 
startService(intent);

}

我的服务.java

public class myService extends IntentService {

@Override
protected void onHandleIntent(Intent intent) {

String signal = intent.getAction();
if (signal != null && signal.equals("stop")) {

stopSelf();

} else {
t.schedule(new TimerTask() {System.out.println("print")}, 0, 10000);

}

}
}

单击按钮停止服务

Intent in = new Intent(this, myService.class);
in.setAction("stop");
stopService(in);

谁能帮我停止服务?

4

3 回答 3

4

来自IntentService的文档

IntentService 是按需处理异步请求(表示为 Intent)的服务的基类。客户端通过 startService(Intent) 调用发送请求;该服务根据需要启动,使用工作线程依次处理每个 Intent,并在工作结束时自行停止。

换句话说,您不必停止IntentService- 当它没有更多工作要做时,它会自行终止。

编辑:

回顾你的代码,似乎你不想停止IntentService你想停止的TimerTask???

t.schedule(new TimerTask() {System.out.println("print")}, 0, 10000);

我不知道是什么t,但我猜它是一个Timer. 如果是这种情况,它将自行运行Thread并尝试终止它IntentService是没有意义的 - 而是杀死它Timer

另外,为什么要使用 anIntentService创建任何类型的对象来维护自己的执行线程?

于 2012-06-30T07:41:40.643 回答
2

现在我想停止该服务的活动如何停止该服务?

IntentService停止自己,你不应该,你不能调用stopSelf().

处理完所有请求后,将IntentService自行停止。

于 2012-06-30T07:46:29.313 回答
0

据我所知,IntentHandler创建一个单独的新线程,完成它的工作,然后杀死自己。

所以我认为你不需要明确地停止它的活动。

于 2012-06-30T07:42:06.400 回答