Try using different requestCodes for every pendingIntent:
PendingIntent pendingIntent = PendingIntent.getService(context, uniqueRequestCode, intent, PendingIntent.FLAG_UPDATE_CURRENT);
It should enable android to differentiate between your pending intents and therefore all buttons will start the service, not just last one. The reason why this should work was discussed here somewhere long time ago - I can try to look it up if you are interested.