【问题标题】:How to update widgets from a service?如何从服务更新小部件?
【发布时间】:2010-05-15 01:08:48
【问题描述】:

我有一个后台服务,可以配置为每 x 分钟执行一次操作。我想实现一个小部件,每次我的服务执行该操作时都会更新。但是,我无法以任何方式调用 AppWidgetProvider 的 onUpdate 方法,除非将小部件添加到主屏幕。

我尝试发送 APPWIDGET_UPDATE 意图,但 onUpdate 没有被调用,尽管 AppWidgetProvider 确实收到了意图,因为调用了 onReceive 方法。有什么方法可以从服务触发小部件更新?

【问题讨论】:

    标签: android widget


    【解决方案1】:

    只需让自己成为RemoteViews 并直接在Service 中更新小部件。您将通过以下方式获得AppWidgetManager

    AppWidgetManager mgr=AppWidgetManager.getInstance(this);
    

    其他一切正常。

    注意:-如果你真的想强制现有的AppWidgetProvider 完成这项工作,请向你的组件发送一个带有自定义操作的广播,然后自己从onReceive() 调用onUpdate()当你得到它。

    【讨论】:

    • 谢谢!第二个建议是我所做的,它就像一个魅力。为什么我自己没有想到... :)
    • onUpdate 需要一个数组 int[] appWidgetIds 作为参数。在onReceive方法中怎么计算?
    • @Guido: 致电getAppWidgetIds() AppWidgetManager: developer.android.com/reference/android/appwidget/…
    • @CommonsWare 如果您有多种类型的小部件怎么办;这样代码不是很可扩展,因为您必须手动获取 id 并更新所有小部件类型的视图? (并不是说你会有几十种不同类型的c)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多