Я создал WidgetProvider и Сервис, который запускается в системе TIME_TICK - эта часть работает нормально, Сообщения журнала показывают, что Сервис работает AOK, и он отлично смотрится на реальном телефоне.
Для обновлениямои виджеты Я использую подобный код (отредактированный для ясности, чтобы он мог содержать опечатку)
Log.d("xxx","Updating");
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.main);
views.setTextViewText(R.id.appwidget_text, "Some Text" + System.currentTimeMillis());
ComponentName thisWidget = new ComponentName(context, SWClockWidgetProvider.class);
AppWidgetManager manager = AppWidgetManager.getInstance(context);
manager.updateAppWidget(thisWidget, views);
На моем телефоне (HTC Desire под управлением 2.2) все идеально, виджеты обновляются по минутам, каждый разминут.
В эмуляторе (работает 2.2) появляются сообщения журнала (например, служба работает), но виджеты не обновляются.
Теперь я вызываю этот код в 2 местах - из метода onUpdate провайдера (чтобы он помещал что-то в виджеты при их первом отображении) и из прослушивателя службы (для их обновления)
Теперь вот странный бит - в моем манифесте я первоначально объявил свой сервис следующим образом:
service android: name = ". SWClockWidgetService"
Когда я изменил это, чтобы явно упомянуть пакет(что, конечно же, идентично пакету провайдера)
служба android: name = "com.somewhatdog.swclockwidget.SWClockWidgetService"
первоначальное обновление (вызывается из провайдера onUpdate) работает НО последующеезвонки от слушателя Сервиса все еще не принимаются!?
Примечание: Первоначально я сделал Сервис внутренним классом провайдера, но он не работал на телефоне ИЛИ эмуляторе - не знаю, связано ли это ...
Во всяком случае - я озадачен - тот же Android на телефоне и эмуляторе - один работает, другой нет (что означает шансы этой работына других устройствах, по меньшей мере, капризно ??)
Я более чем немного потерян здесь - любой совет, оцените.
ps Я проверял это на эмуляторе под управлением 1.6 нетрадость - он работает на эмуляторе под управлением 2.1r1 и 2.3.3, так что кто знает ...