我有一个带有主屏幕小部件的应用程序,是使用
RemoteViews(Map<SizeF, RemoteViews>)
构造函数创建的,因此要膨胀的布局的选择取决于小部件的大小。该地图有 2 个视图。这部分工作正常,但我还需要使用 AppWidgetManager#partiallyUpdateAppWidget()
执行此小部件的部分更新,而这似乎总是被忽略。
但是,当我使用单个非映射的
RemoteViews
实例时,它确实有效。我怀疑这个问题是由于 partiallyUpdateAppWidget()
的要求造成的:
如果小部件尚未通过
收到完整更新,则此方法将被忽略
AppWidgetManager#updateAppWidget(int[], RemoteViews)
大概“映射”
RemoteViews
获取了更新,但没有获取它所膨胀的布局,因此partiallyUpdateAppWidget()
尝试更新的布局没有被标记为已更新,因此它被忽略。
有其他人遇到过这个问题,或者找到解决方案吗?
一位谷歌用户说:
当前行为正在按预期进行。部分更新不是 旨在用于合并树结构。在这些情况下,其 更安全的是,只推送完整的远程视图,而不是跟踪 在之前的更新中推送了哪些尺寸(因为尺寸也可以 那时已经改变了)
这似乎是一个未记录的按预期工作的限制。