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

时间:2011-02-22 10:11:31

标签: android android-widget android-alarms

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

“标准”方式是定义BroadcastReceiver并以毫秒为单位定义更新频率 - 这种方式允许最少30分钟的更新间隔以节省电池电量。听起来很合理。

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

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

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

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

任何人都可以给我一个暗示吗?

1 个答案:

答案 0 :(得分:2)

  

我假设一旦设备因某些其他原因被唤醒,事件发生之后的任何时候都会发送意图 - 是吗?

  

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

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

  

但只要设备处于打开状态或更具体:只要屏幕打开并且窗口小部件可见,我就需要大量的更新事件!就像显示秒数的时钟需要每秒重绘的意图!

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

  

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

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