So far I havent needed to resort to Partial Lock and have been scheduling services for a while.
The main reason my service stopped running was because the scheduler was inside an IF statement for e.g.
if (hello = 1) then
scheduleservice
end if
Now, initially the app sets hello to 1,
but once the service gets destroyed later on due to low resources,
and the service schedules itself and wakes up,
the variable hello has been destroyed, and now contains 0,
so it will not schedule the service again.
so make sure the scheduler for your service is not dependent on any variables that might have been destroyed.
Just to make sure, I created a DebugLogger that logs when the service starts and when it schedules again. This helps a lot in debugging.