Thanks for the reply. I’ve tried that and it seems only one or the other works for my app. If I set GPS as the first item in the array and audio as the second, then GPS will work with the screen locked, but not Flite. However, if audio is in the first position of the array, then Flite works but not GPS. In the GPS method “didUpdateToLocation”, which runs when there is a GPS location update, I compute max speed and also when speed exceeds various thresholds, I use Flite to speak the speed. I can tell if GPS runs under screen lock if top speed gets computed. With GPS first in the array, I get max speed computed with the screen locked, but no Flite speaking. I can also test Flite by pressing a button. When I do this to start Flite speaking, then press the screen lock, if audio is set first in the array, the speaking will continue after the screen is locked. However, if GPS is first in the array, then the speaking will cut off when the screen is locked and continue when unlocked. Any idea why the GPS and audio cases seem to be mutually exclusive for my app?