如何在应用程序启动时初始化已添加的应用程序小部件?

时间:2012-05-17 13:46:37

标签: android android-appwidget

我需要在app小部件中使用Observer订阅数据库更改。文档说明此类设置的正确位置是onEnabled() AppWidgetProvider。但是,onEnabled()仅在添加新窗口小部件时调用。如果应用程序已启动且窗口小部件已存在,则不会调用它,并且窗口小部件中的数据不会更新。我应该在应用启动时发送ACTION_APPWIDGET_ENABLED广播还是有其他方法可以做到这一点?

2 个答案:

答案 0 :(得分:1)

  

我需要使用app小部件中的Observer订阅数据库更改。

这是不可能的,除非你要运行一个永恒的服务,这不是一个好的设计模式。

如果这是您自己的数据库,只需在更改数据库内容时使用AppWidgetManager将更新推送到您的应用小部件。

答案 1 :(得分:0)

虽然CommonsWare在上面的答案中是正确的,但是为app小部件保持静态观察者的方法存在缺陷,为了解决我已经拥有的实现中的问题,我在应用启动时发送ACTION_APPWIDGET_ENABLED广播。不是很干净的方式,但它有效。