Search code examples
iosios8nsfilemanageravaudiorecorderdispatch-async

Saving in Background Thread not getting finished


I have an instance of AVAudioRecorder and I have noticed that when the user closes the app too fast with a larger recording the file does not get saved properly.

This even happens when I call [recorderObject stop] in the main thread and the file gets saved locally.

I have also tried moving the file after the recording has stopped (in the (void)audioRecorderDidFinishRecording:successfully: method). But I have noticed that when I do the move with NSFileManager in a background thread with high priority, it too doesn't always finish.

Is there a way for me to insure that the files get saved, even if the user exits the app shortly after finishing a longer recording?

Thanks


Solution

  • Review Apple's documentation for executing tasks in the background.

    Apps moving to the background are expected to put themselves into a quiescent state as quickly as possible so that they can be suspended by the system. If your app is in the middle of a task and needs a little extra time to complete that task, it can call the beginBackgroundTaskWithName:expirationHandler: or beginBackgroundTaskWithExpirationHandler: method of the UIApplication object to request some additional execution time. Calling either of these methods delays the suspension of your app temporarily, giving it a little extra time to finish its work. Upon completion of that work, your app must call the endBackgroundTask: method to let the system know that it is finished and can be suspended.