首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CountDownTimer服务

CountDownTimer服务
EN

Stack Overflow用户
提问于 2012-03-30 07:20:26
回答 1查看 1.7K关注 0票数 1

我正在尝试让一个倒计时计时器在我的活动的后台运行,它需要不断运行,直到它完成,但不确定如何让它与服务一起工作。我还需要更新我的主活动的显示

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-30 11:03:39

呃,并不是所有的服务都能100%运行。除非它以100%的速度执行,否则不会耗尽电池。如果你看看Android设备的实际电池消耗,你会发现最大的百分比来自屏幕。下一个来自无线电。运行一个进程的成本非常低。

您可以使用IntentService定期触发警报。该服务可以向其自身发送意图。有一个启动服务的意图动作和一个关闭警报的意图动作。执行第三个操作以重置警报。

要启动该服务,请使用startService( intent )向IntentService发送" start“意图。这应该会触发一个方法,该方法创建一个带有动作"cycle“的intent,将这个intent放在一个PendingIntent中,并使用AlarmManager.setRepeating()调度一个重复的警报。

在您为警报设置的时间间隔之后,AlarmManager将从PendingIntent中取出“循环”意图,并将其发送回您的服务。您的服务应该通过重建PendingIntent并重新启动警报来处理“周期”。这将无限期地持续下去。当警报响起时,您可以将您想要做的任何其他事情放在“循环”操作的处理中。

当您想要警报停止时,发送“停止”意图。作为响应,您的服务应该通过重新构造PendingIntent然后调用AlarmManager.cancel()来取消警报。

注意: IntentService的主要入口点是onHandleIntent()。你在那给其他的东西打电话。当该方法完成时,服务将变为非活动状态,直到它接收到另一个意图。您唯一可以“看到”它的地方是缓存进程。一旦您停止警报,系统最终会发现该服务未被使用,并对其进行垃圾回收。

服务是完成后台工作的方式。我认为您可以运行一些AsyncTask或线程,但您仍然希望在服务中运行它们,否则您会将它们链接到在前台运行的东西。如果任务不需要与用户交互,特别是如果它可以与您的活动异步工作,那么可以使用服务。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9934998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档