Лучше всего останавливать службу после того, как она выполнила то, что ей нужно, вместо того, чтобы разрешить удаление виджета до его остановки.
Вы должны позволить ему выполнить обновление виджета, затем вызвать stopSelf (); Если у вас настроен AlarmManager для повторного запуска службы, это не должно быть проблемой.
По поводу обновления. Вы должны установить частоту обновления виджета в своем XML-файле widgetconfig. Начиная с Android 1.6, я считаю, что самое короткое обновление - 30 минут. (Если вам нужно сделать обновление чаще, тогда лучше всего будет использовать менеджер тревог.) OnUpdate пропустит массив идентификаторов виджетов, и вам нужно пройти через них, чтобы получить все ваши виджеты.