为什么我不能在Android中停止服务?

时间:2010-02-15 10:20:16

标签: java android service debugging

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;
    }
}

2 个答案:

答案 0 :(得分:5)

要在服务停止时让Timer消失,您需要在服务的相应回调方法中调用cancel()上的Timer; onDestroy看起来很像。

  

即使我停止服务......我的计时器也会运行?为什么?

因为就Android操作系统而言,Timer实例在逻辑上与任何特定服务无关。服务实现负责处理释放垃圾收集器不会处理的任何资源。 (打开文件句柄和数据库连接是我想象的其他例子。)

答案 1 :(得分:2)

它会停止您的服务。在您的服务中覆盖onDestroy,您将看到它被调用。但是服务!=计时器,你必须手动停止你的计时器。