Да, вы можете обновить свой виджет при входе 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;
}
}