我有一个启动固定速率计时器的活动。重新打开活动后,如何检查计时器当前是否正在运行?
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中更改它就行不通,因为我希望计时器在应用程序关闭时继续关闭(但计时器保持打开状态)。
有没有更好的方法来检查计时器?或者可能是一种知道何时通过强制关闭或重启来关闭计时器的方法?
答案 0 :(得分:1)
startService方法调用的服务取决于它包含的Activity 为什么不使用bindService方法?
答案 1 :(得分:1)
老实说,我需要更多代码才能给你一个明智的意见,但根据你给出的内容我会说你想把你的计时器逻辑转移到服务中。通过致电startService
,服务将继续运行,直至您致电stopService
。然后您的计时器可以在服务中无限期地继续运行,而不必担心被停止(除非用户强制关闭您的服务)。
根据您与GetClassInfoService.class
进行通信所需的内容,您可以使用基于IntentService的类似邮箱的系统,也可以使用更强大的服务绑定方法。两者都描述为here.