2011-09-28 66 views
0

我試圖從更新的服務的小部件......服務啓動執行該代碼更新從服務窗口小部件

AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(Worker.this); 
RemoteViews remoteViews = new RemoteViews(Worker.this.getPackageName(), R.layout.mywidget); 
ComponentName projectWidget = new ComponentName(Worker.this, MyWidget.class); 
remoteViews.setTextViewText(R.id.widgetstate, "update"); 
appWidgetManager.updateAppWidget(projectWidget, remoteViews); 

的方法的onUpdate剛剛打印日誌線程,但該日誌僅在創建小部件時纔打印,而不是每次都是線程循環...我錯在哪裏?

在此先感謝

回答

2

你沒錯。您只需更新小部件而不致電onUpdate()。這只是一種方便的方法,可以響應系統廣播的ACTION_APPWIDGET_UPDATE。你不要來調用它來更新一個小部件,它也只是像你在這裏一樣工作。 ¹

要調用它,您可以發送廣播或手工調用它,但從代碼結構的角度來看,將widget更新功能保留在一個地方以方便查找,這是一個不錯的主意。

¹看看AppWidgetProvider source, line 56。整個AppWidgetProvider只是一個BroadcastReceiver,它已經爲你做了一些工作 - 它確實以同樣的方式開始更新。

+0

呃你是對的,但爲什麼日誌不打印? ^^試圖改變文本無論如何,這個作品..謝謝^^ – Erenwoid

+0

如上所述,小部件得到更新。但不是來自'onUpdate()'。如果您在上面發佈的服務中的代碼行之間添加了日誌調用,則應該看到調用該代碼。 – 2011-09-28 21:52:14

+0

哦好吧現在明白^^再次感謝! – Erenwoid