2

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

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

那是因为Retro Clock小部件实现了闹钟服务吗?如果是这样,我该如何去引用该服务?还是我把这一切都错了和误解了?

任何帮助表示赞赏。

编辑:

我相信实施更新时钟的服务会极大地消耗电池寿命,任何解决方法的想法或有助于阐明使用的任何性能问题Service

4

3 回答 3

5

我的猜测:Retro Clock 小部件响应触摸,并触发启动闹钟设置页面的意图。您可以查看 Android 源代码以了解其意图。要了解如何连接您的小部件以实际触发 Intent,您可以查看Android 开发指南中的代码示例


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

注意:如果设备在更新时间(由 updatePeriodMillis 定义)时处于睡眠状态,则设备将唤醒以执行更新。如果您每小时不更新一次以上,这可能不会对电池寿命造成重大问题。但是,如果您需要更频繁地更新和/或在设备处于睡眠状态时不需要更新,那么您可以改为基于不会唤醒设备的警报执行更新。为此,请使用 AlarmManager 使用 AppWidgetProvider 接收的 Intent 设置警报。将警报类型设置为 ELAPSED_REALTIME 或 RTC,这将仅在设备唤醒时发出警报。然后将 updatePeriodMillis 设置为零(“0”)。

(来自App Widgets 指南


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

于 2009-12-21T20:15:14.203 回答
3

看看这个。它使用服务实现时钟,并订阅屏幕关闭事件,以便在屏幕关闭时暂停服务以节省一些电池。

于 2010-06-05T10:14:45.890 回答
2

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

于 2009-12-21T20:13:53.180 回答