【问题标题】:Android: Custom Clock widget Service work-around?Android:自定义时钟小部件服务解决方法?
【发布时间】:2010-12-28 20:45:23
【问题描述】:

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

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

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

感谢任何帮助。

编辑:

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

【问题讨论】:

    标签: android widget code-reuse


    【解决方案1】:

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

    【讨论】:

    • 感谢您提供的链接,这正是我希望通过Service 节省电池寿命的方法。
    【解决方案2】:

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


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

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

    (来自App Widgets guide


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

    【讨论】:

    • 感谢您的信息,如果您可以看一下,请稍微修改一下问题
    • 不用担心。这些事情发生了。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-04
      • 1970-01-01
      • 2015-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-26
      相关资源
      最近更新 更多