当设备开启且小部件在主屏幕可见时才更新小部件。

7
据我理解,关于小部件的官方文档让我有些困惑。
“标准”方法是定义一个BroadcastReceiver并以毫秒为单位定义更新频率-这种方法允许最短的更新间隔为30分钟以节省电池电量。听起来很合理。
我在阅读Google文档时发现的“手动”方法是使用AlarmManager自己处理小部件的更新。使用此方法可以实现更高的更新间隔(尽管当然不鼓励这样做!),并且可以使用不会在设备休眠时唤醒设备的警报类型。(我假设意图在事件触发后任何时间发送,只要设备因其他原因而唤醒-是这样吗?)
现在,我被以下思考所困扰:小部件位于主屏幕上。或者至少它们最常见的位置是主屏幕。Android提供了许多主屏幕页面(标准为5或7个),因此用户放置的小部件可能甚至不可见!
只要小部件显示的信息只是一个非常简单的文本(例如当前时间!),那么无论何时需要,都可以在没有延迟的情况下计算或推导出来,我不希望有任何更新频率甚至在不可见时唤醒设备的意图!
但是只要设备开启,或更具体地说:只要屏幕开启并且小部件可见,我希望有很多更新事件!就像显示秒钟的时钟需要每秒绘制一次意图!
如何实现这一点?“Android模拟时钟”是如何实现的?A(“标准”)方法和B(“手动”)方法都不能提供高频率的更新,只有在设备开启并且我的小部件可见时才有。
有人能给我一个提示吗?
1个回答

3

我假设意图是在事件触发后的任何时间发送,只要设备因某些其他原因唤醒即可 - 是这样吗?

是的。

当它不可见时,我不希望有任何更新频率或设备唤醒意图!

但是你的用户在许多情况下需要。您所做的任何值得在更新中执行的操作都可能需要一些秒数。用户不会坐在那里等待一些秒数。因此,应用小部件更新模型表示,您应该始终保持应用小部件更新,以便当用户查看应用小部件时,他们立即获得更新的数据。

但只要设备开启,或更具体地说:只要屏幕开启且小部件可见,我就想要很多更新事件!像显示秒钟的时钟需要一个意图每秒重绘一次!

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

“安卓模拟时钟”如何实现?

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


相信我:我的“计算”不会消耗任何时间。显示到某个时间点剩余的分钟数只是每分钟减去一而已... :-) 这就是为什么我确定除非我的小部件对用户可见,否则我不需要做任何事情!我可以添加到主屏幕的时钟小部件根本不是小部件?你确定吗?? - Zordid
1
@Zordid:“我可以添加到主屏幕的时钟小部件根本不是小部件?” - 手机上预装的那些是主屏幕的功能。仅仅因为它们出现在“小部件”上下文菜单中并不意味着它们是SDK中的应用程序小部件。 - CommonsWare

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接