2011-11-28 81 views
1

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

回答

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; 
    } 


} 
+0

我终于开始在这个项目上再次工作。感谢你的回答 – tdramble