With iOS 4, Apple pushes everyone to build our apps so that we preserve the state of the application when it terminates. This is because to the normal user there is no difference between an app being “pushed” to the background and an app being terminated. Apple want the users to feel like our apps never terminate. That they just leave them in the background a while.
I’ll explain how I implemented this behaviour using NSUserDefaults in my app, Extraction. It may not be the most advanced technique or the best in any way. I just know it works for me.