【问题标题】:Updating time of clock widget时钟小部件的更新时间
【发布时间】:2020-06-06 23:45:37
【问题描述】:

我正在考虑创建一个时钟小部件来显示当前时间,但如果您可以为小部件设置的最短时间是 15 分钟,那显然是行不通的。

我还看到有关使用 AlarmManager 的建议,但我担心电池寿命。

我还看到意图动作Intent.ACTION_TIME_TICK 每分钟触发一次,看起来就像我想要的,但正如文档所述

您无法通过清单中声明的​​组件接收此信息,只能 通过显式注册

所以这似乎不适用于小部件

所以问题是,有没有一种“正确”的方法来构建一个不会耗尽电池并仍然更新当前时间的时钟小部件?

【问题讨论】:

    标签: android android-widget


    【解决方案1】:

    如果您谈论的是数字时钟,Android 在 API 级别 17 上添加了 TextClock 布局小部件。 您可以简单地将其添加到您的小部件 XML 中,它会自动显示时间。 示例:

            <android.widget.TextClock
            android:id="@+id/clock"
            android:format24Hour="k:mm"
            android:format12Hour="k:mm"
            android:gravity="center" />
    

    实际上,我(本周)刚刚制作了一个开源的 android 数字时钟小部件,请随意浏览和使用我的代码。拉请求将不胜感激! 我相信这会对你有所帮助,因为我在路上偶然发现了一堆令人惊讶的墙壁。 https://github.com/y0av/MaterialClockWidget

    如果您想要数字时钟以外的任何东西,则需要使用您提到的 AlarmManager。

    【讨论】:

    • 这不是您可以放在主屏幕小部件中的受支持的视图小部件之一。 developer.android.com/guide/topics/appwidgets#CreatingLayout
    • @tyczj 确实有效。在多种设备和启动器上测试。
    • 嗯,有意思,那我试试
    • @Joe 你的小部件看起来很棒。在没有广告、跟踪等的情况下,很难找到像样的 android 东西。我建议将其发布到 F-Droid,以便寻找开源东西的人更容易找到。我缺少的一件事是它可以点击打开时钟应用程序,并可能显示下一个警报和更好地处理拒绝文件访问(因为这完全破坏了它)。当我有时间时,我会尝试为此做一个 PR。
    【解决方案2】:

    仅在用户观看时打勾。因此,在 onResume 中将其设置为当前时间并每分钟更新一次,然后在 onPause 中停止更新并终止计时器、句柄、rxInterval 或您用于定期更新视图的任何内容。

    【讨论】:

    • 小部件没有 onPause/onResume,将小部件绑定到活动没有意义,因为这样主屏幕上的小部件只会在用户打开应用程序时更新,因此它不会显示正确的时间
    猜你喜欢
    • 2013-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多