PendinIntents очень часто используются для виджетов. Поскольку компоновка работающего виджета не «принадлежит» вашему коду, а вместо этого находится под контролем системы, вы не можете напрямую назначать прослушиватели щелчков элементам интерфейса. Вместо этого вы назначаете PendingIntent этим элементам (например, кнопкам), поэтому, когда пользователь касается их, PendingIntent «выполняется», что-то вроде:
// get the widget layout
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.id.widget_layout);
// prepare to listen the clicks on the refresh button
Intent active = new Intent(context, WidgetCode.UpdateService.class);
PendingIntent refreshPendingIntent = PendingIntent.getService(context, 0, active, 0);
remoteViews.setOnClickPendingIntent(R.id.buttonWidgetRefresh, refreshPendingIntent);
// send the changes to the widget
AppWidgetManager.getInstance(context).updateAppWidget(appwidgetid, remoteViews);
В этом случае кнопка в виджете запускает сервис. Обычно вы добавляете в намерение дополнительную информацию с помощью метода putExtras (), чтобы служба получала всю необходимую информацию для своей работы.