Android:获取一个已经启动的Timer

时间:2011-10-13 01:38:54

标签: java android timer

我有一个启动固定速率计时器的活动。重新打开活动后,如何检查计时器当前是否正在运行?

timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
    public void run()
    {
         startService(new Intent(getBaseContext(), GetClassInfoService.class));
    }
}, 0, Integer.parseInt(updateTime)*60*1000);
editor.putString("timerState", "on");

我已尝试设置共享首选项,并且除了应用程序完全关闭之外,每个实例都有效,完全关闭计时器(如果用户强制关闭或重新启动设备)。共享偏好将保持“开启”状态。只需在onDestroy中更改它就行不通,因为我希望计时器在应用程序关闭时继续关闭(但计时器保持打开状态)。

有没有更好的方法来检查计时器?或者可能是一种知道何时通过强制关闭或重启来关闭计时器的方法?

2 个答案:

答案 0 :(得分:1)

startService方法调用的服务取决于它包含的Activity 为什么不使用bindService方法?

答案 1 :(得分:1)

老实说,我需要更多代码才能给你一个明智的意见,但根据你给出的内容我会说你想把你的计时器逻辑转移到服务中。通过致电startService,服务将继续运行,直至您致电stopService。然后您的计时器可以在服务中无限期地继续运行,而不必担心被停止(除非用户强制关闭您的服务)。

根据您与GetClassInfoService.class进行通信所需的内容,您可以使用基于IntentService的类似邮箱的系统,也可以使用更强大的服务绑定方法。两者都描述为here.