2011-11-28 80 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