Android:自定义时钟小部件服务解决方案?

时间:2009-12-21 19:29:36

标签: android widget code-reuse

我有兴趣为主屏幕开发一个时钟小部件,在阅读Home Screen Widgets tutorial后,我想知道是否有一个预先存在的Service我可以参考更新当前时间而不是重新发明轮子?

我在我的Android手机上下载了复古时钟应用程序,并注意到当我点击它时,会弹出闹钟设置,但使用默认的Google 模拟时钟小部件,点击后什么都不做。

这是因为 Retro Clock 小部件实现了闹钟服务吗?如果是这样,我该如何引用该服务?或者我是否将这一切都弄错了?

感谢任何帮助。

编辑:

我认为实施更新时钟的服务会极大地耗尽电池寿命,任何有关解决方案的想法或帮助解决使用Service的任何性能问题?

3 个答案:

答案 0 :(得分:5)

我的猜测:Retro Clock小部件响应触摸,并触发启动闹钟设置页面的意图。您可以查看Android源代码,找出可能的意图。要了解如何连接窗口小部件以实际触发意图,您可以查看code example in the Android dev guide


对于时钟小部件,您似乎有两个要求。它需要每分钟至少更新一次,但在设备处于睡眠状态时无需更新。这是我发现的一句话:

  

注意:如果设备在更新时(由updatePeriodMillis定义)处于睡眠状态,则设备将被唤醒以执行更新。如果每小时更新不超过一次,这可能不会导致电池寿命出现严重问题。 但是,如果您需要更频繁地更新和/或在设备处于睡眠状态时无需更新,则可以根据不会唤醒设备的警报执行更新。至这样做,使用AlarmManager使用AppWidgetProvider接收的Intent设置警报。将警报类型设置为ELAPSED_REALTIME或RTC,它仅在设备唤醒时发出警报。然后将updatePeriodMillis设置为零(“0”)。

(来自App Widgets guide


顺便说一句,我有机会和HTC Hero一起玩。我注意到,当你从睡眠中唤醒一个英雄时,它的模拟时钟小部件上的指针从12开始。然后,它旋转双手以达到适当的时间。这可能是因为他们在手机休眠时不会更新它。

答案 1 :(得分:3)

Check this out。它通过服务实现时钟,并订阅屏幕关闭事件,以便在屏幕关闭时暂停服务以节省一些电池。

答案 2 :(得分:2)

它弹出闹钟的原因是它已经实现了OnClick方法,并从那里启动闹钟。您可以从OnClick启动任何活动,在很多情况下,小部件使用它来启动自己的配置实用程序。