从SavedReferences更新Android小部件失败

从SavedReferences更新Android小部件失败,android,widget,settings,Android,Widget,Settings,应用程序说明: 显示每60000ms更新一次的信息集的小部件。 一个视图活动,用于设置小部件使用的首选项。 所有的首选项都会保存并更新。当用户按下关闭按钮时,信息被更新,小部件得到更新调用。SavedReferences在小部件void中为onUpdate调用 这一切都很好。谢谢你已经回答了很多问题,让我走了这么远 问题是。。。稍后触发自动更新时,savedReferences中的变量无法加载。有时候是这样。有时候,他们不会。因为这是在我的平板电脑上运行的,所以我没有要报告的错误日志。我看到的是

应用程序说明: 显示每60000ms更新一次的信息集的小部件。 一个视图活动,用于设置小部件使用的首选项。 所有的首选项都会保存并更新。当用户按下关闭按钮时,信息被更新,小部件得到更新调用。SavedReferences在小部件void中为onUpdate调用

这一切都很好。谢谢你已经回答了很多问题,让我走了这么远

问题是。。。稍后触发自动更新时,savedReferences中的变量无法加载。有时候是这样。有时候,他们不会。因为这是在我的平板电脑上运行的,所以我没有要报告的错误日志。我看到的是小部件没有崩溃,但它显示的是原始XML,没有任何文本视图填充了savedReference。 我发现真正奇怪的是,连默认值都没有加载。也就是说,它加载的密钥设置为,如果没有找到任何内容,则应该返回默认值。这通常用于(比如)第一次加载小部件,并且没有要加载的首选项。 如果首选项读取失败,为什么不加载默认值?
为什么首选项的读取会失败得如此彻底,但只在某些时候失败?

是的。我在回答我自己的问题。我认为这将有助于任何人设计一个有偏好设置的小部件

问题不是我想的那样。当屏幕旋转时,缺少更新。显然,这会触发对小部件的刷新,但不会调用onUpdate void。因此,您得到的是未经更新的原始XML绘制。在下一次自动更新启动之前,它将一直保持这种状态


因此,这个问题的解决方案是确定如何检测屏幕方向的变化,并在“设置”视图关闭时触发onUpdate。

什么是SavedReferences?也许是共享的证据?是的,对不起。我面前没有密码。我在工作。