【问题标题】:c2dm to update an android widgetc2dm 更新一个 android 小部件
【发布时间】:2011-11-28 12:29:52
【问题描述】:

我正处于下一个 Android 项目的规划阶段。我想为我当前的车库开门器应用程序创建小部件。目前它只是一个应用程序,底部有一个刷新按钮,用于更新门的状态(打开或关闭)。我希望车库中的网络连接设备在我的门状态发生变化时发送一条 c2dm“推送”消息,以便我可以一起取消刷新按钮。如果我创建一个显示门状态的主屏幕小部件,它是否能够在这些 c2dm 消息进入时实时更新,或者小部件只能在计时器上更新?

【问题讨论】:

    标签: android android-widget widget android-c2dm


    【解决方案1】:

    是的,您可以在 C2DM(现为 GCM)进入时更新您的小部件。

    一旦您的应用收到 C2DM(或 GCM)消息,您要么必须从服务器获取更新,或者如果您将其作为有效负载与消息一起发送,则从消息中检索它,并将其存储在本地。然后您必须为您可能已经在使用的小部件启动更新服务。在不了解您的应用程序的情况下,很难准确地说出如何实现这一点。通常,小部件将具有更新的服务。下面是一个通用的更新服务:

    public static class UpdateService extends Service {
        @Override
        public void onStart(Intent intent, int startId) {
            RemoteViews updateViews = buildUpdate(this);
    
            // Push update for this widget to the home screen
            ComponentName thisWidget = new ComponentName(this, Widget.class);
            AppWidgetManager manager = AppWidgetManager.getInstance(this);
            manager.updateAppWidget(thisWidget, updateViews);
        }
    
    
        public RemoteViews buildUpdate(Context context) {
           // process the updated view here.  Probably would pull data from DB and update views       //accordingly
            return updateViews;
        }
    
    
    }
    

    【讨论】:

    • 我终于又开始着手这个项目了。感谢您的回答
    猜你喜欢
    • 1970-01-01
    • 2012-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-09
    • 2011-05-03
    • 2011-02-14
    相关资源
    最近更新 更多