2011-10-13 40 views
1

我有一个启动固定速率定时器的活动。如果我重新打开活动,如何检查计时器是否正在运行?Android:获取已启动的定时器

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中更改它将无法工作,因为即使应用程序关闭(但计时器保持打开状态),我也希望计时器继续关闭。

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

回答

1

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

1

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

根据您需要与GetClassInfoService.class进行通信的情况,您可以使用类似IntentService的邮箱,也可以使用更强大的服务绑定方法。两者都有描述here.