仅在设备打开时更新窗口小部件并且窗口小部件在主屏幕上可见

Zor*_*did 7 android android-widget android-alarms

据我所知,关于Widgets的官方文档我有点困惑.

"标准"方式是定义BroadcastReceiver和定义更新频率(以毫秒为单位) - 这种方式允许30分钟的最小更新间隔以节省电池电量.听起来很合理.

我发现阅读Google文档的"手动"方式是使用自己来处理小部件的更新AlarmManager.使用这种方法可以实现更高的更新间隔(当然不鼓励!)并且可以使用在睡眠时不唤醒设备的警报类型.(我假设一旦设备因某些其他原因被唤醒,事件发生之后的任何时间都会发送意图 - 是吗?)

现在,我对以下想法感到困惑:小部件驻留在主屏幕上.或者至少这是他们将被发现的最常见的地方.Android在主屏幕上提供了许多页面(标准是5或7),因此即使用户放置了Widget,也可能看不到!

只要窗口小部件显示的信息只是一个非常简单的文本(如当前时间!),可以在任何需要时无需任何延迟地计算或导出,我不希望任何更新频率甚至设备唤醒意图不可见!
只要设备处于打开状态或更具体:只要屏幕打开并且窗口小部件可见,我就需要大量的更新事件!就像显示秒数的时钟需要每秒重绘的意图!

怎么能实现呢?如何实现"Android模拟时钟"?方法A("标准")和B("手动")都没有给出我的高更新频率,但只要设备开启且我的小部件可见.

谁能给我一个暗示?

Com*_*are 3

我假设在设备因其他原因唤醒后事件应该触发后的任何时间发送意图 - 对吗?

是的。

我不想要任何更新频率,甚至不可见时设备唤醒意图!

但在很多情况下,您的用户会这样做。您在更新中所做的任何值得做的事情都可能需要几秒钟的时间。用户不会坐在那里等待几秒钟。因此,应用程序小部件更新模型表示您要不断更新应用程序小部件,因此当用户查看应用程序小部件时,他们会立即获得更新的数据。

但只要设备打开,或者更具体地说:只要屏幕打开并且小部件可见,我就需要很多更新事件!就像显示秒数的时钟需要重新绘制每一秒一样!

编写您自己的主屏幕应用程序。

“Android模拟时钟”是如何实现的?

这是主屏幕应用程序的一项功能。