Метод onUpdate выполняется только в том случае, если виджет инициализирован (например, помещен на домашний экран) или срок действия updatePeriodMillis истек.Если вы хотите запустить службу, например, щелкнув мышью на виджете, вам необходимо «прикрепить» ожидающее намерение, например:
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
final Intent intent = new Intent(context, UpdateService.class);
PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, 0);
// Get the layout for the App Widget and attach an on-click listener to
// the button
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout....);
views.setOnClickPendingIntent(R.id.button, pendingIntent);
for(int i=0,n=appWidgetIds.length;i<n;i++){
int appWidgetId = appWidgetIds[i];
appWidgetManager.updateAppWidget(appWidgetId , views);
}
(очищенная версия рабочего виджета).
Дело в том, что метод onUpdate () действительно очень редко выполняется.Реальное взаимодействие с виджетом задается через ожидающие намерения.