Intent helloservice = new Intent(this, HelloService.class);
startService(helloservice);
...
stopService(helloservice);
为什么这不起作用?它只是继续运行。我错过了一些约束吗?
顺便说一句,这是我的服务:
public class HelloService extends Service {
private Timer timer = new Timer();
private long INTERVAL = 1000;
public void onCreate() {
super.onCreate();
startservice();
}
private void startservice() {
timer.scheduleAtFixedRate( new TimerTask() {
public void run() {
Log.d("service", "This proves that my service works.");
}
}, 0, INTERVAL);
; }
@Override
public IBinder onBind(Intent arg0) {
return null;
}
}
答案 0 :(得分:5)
要在服务停止时让Timer
消失,您需要在服务的相应回调方法中调用cancel()
上的Timer
; onDestroy
看起来很像。
即使我停止服务......我的计时器也会运行?为什么?
因为就Android操作系统而言,Timer实例在逻辑上与任何特定服务无关。服务实现负责处理释放垃圾收集器不会处理的任何资源。 (打开文件句柄和数据库连接是我想象的其他例子。)
答案 1 :(得分:2)
它会停止您的服务。在您的服务中覆盖onDestroy,您将看到它被调用。但是服务!=计时器,你必须手动停止你的计时器。