如何通过计时器为工作服务?

时间:2011-12-20 15:15:26

标签: java android

我有以下任务:每隔10分钟创建一个从Internet执行并获取数据的服务。我尝试使用组合Service + Timer,但在这种情况下我无法控制服务(我在onCreate()服务方法中执行TimerTask延迟,当我中断服务时TimerTask不会停止)。我只需要2个按钮:“启动服务”和“停止服务”。在这种情况下,最好的方法是什么?谢谢你的帮忙。

2 个答案:

答案 0 :(得分:1)

您应该使用AlarmManager。请参阅此问题Android: How to use AlarmManager以获取相关帮助。通过让您的服务在10分钟内无所事事,无需浪费用户内存。此外,如果手机处于睡眠状态,您的计时器将无法运行。通过使用AlarmManager,手机将每10分钟自动唤醒一次,并且可以调用您的服务来执行其互联网下载任务。

答案 1 :(得分:0)

如果我理解你,你想知道当你打断你的服务时如何停止TimerTask?! 如果是这样,请继续阅读,否则请更好地解释。

要停止TimerTask再次执行(假设它被安排重复运行),您必须调用cancel()方法。首选方法是在检查一些可以在外部设置的布尔标志后让TimerTask本身调用cancel()方法。

例如:

class MyTimerTask extends TimerTask() {

    private boolean alive = true;

    public void run() {
        if (alive) {
            // do something
        } else {
            cancel();
        }
    }

    public void stop() {
        alive = false;
    }
}

然后,很明显当你中断服务时,你只需要调用MyTimerTask.stop()。