【问题标题】:Widget onUpdate() is not called when Android home screen rotatesAndroid 主屏幕旋转时不调用小部件 onUpdate()
【发布时间】:2011-02-14 18:13:18
【问题描述】:

我的小部件目前有问题。我使用的是 Droid 2 手机,当我打开键盘时,屏幕会旋转,我的小部件从不调用 onUpdate() 函数调用。

为了调试问题,我重写了 onReceive() 并注意到屏幕旋转后我得到了意图操作:

com.motorola.blur.home.ACTION_WIDGET_ADDED

屏幕旋转后,TextViews 会丢失其内容,因此我需要能够在旋转后设置文本。我通常在 onUpdate() 调用中设置文本。

有人知道为什么会出现这个问题吗?我确定我做错了什么......

谢谢,

-乔纳

【问题讨论】:

  • 您遇到了哪些具体问题?当方向改变时,小部件会旋转吗?如果主应用程序正在维护一个包含小部件内容的位图,并且它的几何形状在屏幕旋转期间没有改变,那么没有理由通过强制更新来浪费 CPU 周期。
  • 问题不在于实际的 UI。问题是屏幕旋转后,TextViews 被重置,所以我需要更新文本。
  • 您是否尝试过在手机或模拟器中的股票启动器下运行您的小部件?我没有看到股票主页应用程序或 HTC Sense 的这种行为,并且当方向改变时存在特定于模糊的广播让我觉得摩托罗拉正在通过删除和重新添加小部件来处理它。 (这让我想知道当小部件有配置活动时它们会做什么。)
  • 这个贴子也有关系(有点):stackoverflow.com/questions/7766779/…

标签: android widget


【解决方案1】:

经过大量的在线测试和搜索后,我意识到 Widgets 非常重要。

当屏幕旋转并且需要恢复小部件时,Android 系统将使用上次 RemoteViews 更新的数据来恢复它。

我正在单独更新小部件的某些部分,因此当它需要恢复时,只更新了一个部分。

解决方法总是一次更新 RemoteViews 上的所有内容。

【讨论】:

  • 我知道这是一个旧答案,但我希望你能帮助我。我创建了一个运行良好的主页小部件。但是当手机进入横向模式时,textview 和 imageview 会丢失它们的内容,并且它们会被重置为 xml 文件中的值。但是,按钮上的侦听器效果很好。我正在单独更新小部件的组件,我们如何一次更新远程视图中的所有内容?
  • 经过这么多年,这就是我一直在寻找的答案!我正在使用 onAppWidgetOptionsChanged() 方法将 textviews 的大小更改为小部件的新大小,但我只更新了 textviews 大小而不是所有元素。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多