1. There is no relation between running the code in a service to crashes. The behavior will be exactly the same.
2. Switch to B4XPages and these issues will just disappear.
3. Unless you switch to B4XPages, you need to be prepared to deal with paused activities. Only the activity that at the top can handle events.
You can use IsPaused(SomeActivity) to check its state before trying to call it with CallSub.