service is idle normally so it dont use cpu
It will always use CPU as long as it is running. It just won't use as much if it is "idle".
when a event is received browser wake up the service for permitting to process the event
If the process is idle, it can't listen for the event to wake it up.
possibility to make many many things before not possible
Some things are able to sleep and periodically wake up to check for changes, but this is only possible because the same event is broadcast many times over. This may be the type of thing you are looking for, but it's not feasible unless you want to broadcast the same message over and over.