我需要在应用部件中使用Observer
来订阅数据库更改。该文件说明这种设置的正确位置是onEnabled()
,在AppWidgetProvider
。但是,仅在添加新小部件时才会调用onEnabled()
。如果应用程序启动并且小部件已经存在,它不会被调用,并且小部件中的数据不会更新。我应该在应用程序启动时发送ACTION_APPWIDGET_ENABLED
广播还是有另一种方式做到这一点?如何在应用程序启动时初始化已添加的应用程序小部件?
0
A
回答
1
我需要在应用程序小部件中使用Observer来订阅数据库更改。
这是不可能的,除非你要运行永久服务,这不是一个好的设计模式。
如果这是您自己的数据库,那么当您更改数据库内容时,只需使用AppWidgetManager
将更新推送到您的应用小部件。
0
尽管CommonsWare在上面的回答中正确,但保留应用程序窗口小部件的静态观察者的方法存在缺陷,为了解决已实现的问题,我在应用程序启动时发送了ACTION_APPWIDGET_ENABLED广播。不是一个很干净的方式,但它的工作原理。
相关问题
- 1. 在应用程序池启动时初始化ASP.NET Web应用程序
- 2. 在启动应用程序时初始化昂贵的对象
- 3. 从我的应用程序添加应用程序小部件
- 4. 应用程序初始化
- 5. Tomcat Java Servlet - 在应用程序启动时初始化类
- 6. 在启动时初始化Java EE应用程序缓存
- 7. IBM Worklight - 应用程序服务器启动时的初始化
- 8. 如何当应用程序初始化
- 9. 从应用程序添加小部件
- 10. 如何在应用程序内部启动应用程序
- 11. 当应用程序启动时初始化库项目
- 12. 何时初始化静态类?需要从应用程序对象调用的时候,应用程序启动
- 13. 在web应用程序初始化的Spring bean启动
- 14. 在启动时自动启动后最小化应用程序
- 15. 启动应用程序时启动屏幕时应用程序已停止
- 16. 在应用程序启动时设置对象的初始化顺序
- 17. 在应用程序启动时启动应用程序类
- 18. Android ContentProvider初始化不在应用程序启动
- 19. Django应用程序初始化过程
- 20. 应用程序启动后应用程序大小增加
- 21. c#通过程序在启动时添加应用程序
- 22. 在应用程序启动/初始化之前在flex中加载xml文件
- 23. 在android应用程序安装上启动应用程序小部件
- 24. 在初始启动时,Android应用程序的弹出窗口
- 25. iPad:在应用程序启动时启动外部应用程序
- 26. 如何在每次启动应用程序时加载初始视图?
- 27. 如何在Windows启动时优化WPF应用程序启动
- 28. 如何在应用程序启动时
- 29. 应用程序的一次初始化
- 30. JAX-RS应用程序的初始化
为什么这是不可能的?这在使用RemoteViewsService的API 14,15的WeatherListWidget示例中完成。 –
@YuliaRogovaya:“为什么这是不可能的?” - “AppWidgetProvider”不是“服务”。它是一个'BroadcastReceiver'。一个'AppWidgetProvider'的实例将会持续几毫秒,并且不会做任何超越'onUpdate()'等方法的任何事情,比如注册一个'Observer'。恕我直言'WeatherListWidget'是一个非常破碎的示例,我将尝试与Google一起修复。 – CommonsWare
在此示例中,在onEnabled()中注册了一个静态观察者。当在工作线程上调用此观察者的onChange()时,它会推送RemoteViewsService以更新小部件。问题是,仅在添加小部件时才调用onEnabled()。如果应用程序启动并且小部件已经存在,则初始化不会通过... –