This should be expected since after the device restarts there's nothing that loads again that servrice.
With StartAtBoot you ask the OS to start the service after a device's boot, so it's up to you to discriminate between "first run" and subsequent ones. You may use a boolean var and set it after first run. So the service start, you set the var and do nothing. After 5 min the service starts again, you read the var, know that's time to do something and execute the code. This will happen again and again every 5 mins.
Is it that what you're planning?
Edit: if the service is not kept active (foreground) eventually it will be killed by the OS and if the user launces it manually it will skip the first run as for a restart.
udg