我有以下任务:每隔10分钟创建一个从Internet执行并获取数据的服务。我尝试使用组合Service + Timer,但在这种情况下我无法控制服务(我在onCreate()服务方法中执行TimerTask延迟,当我中断服务时TimerTask不会停止)。我只需要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()。