iOS7 (or apps?) is not so good at "retaining states" imo, downloading a picture in an email will restart if you check another email....another example, type a post in facebook, switch another app you lose your un-sumitted post. Pages fully reloading and eating bandwidth in Safari.
Well, Facebook has always been a terrible iOS application. I'm just glad it doesn't seem to refuse to display new comments and whatnot on posts and pictures anymore (at least most of the time) and freak out entirely when you mess with photos. So, I don't consider them one of the "best" at all.
As far as Safari, this depends much more on the device you have than anything else. Safari does aggressively purge background tabs when memory state is low. It
must, as iOS can't page out to "disk". So, this behavior depends entirely on:
1. Which device you have (older devices with less RAM keep fewer tabs loaded and ready).
2. What other application you switch to (a game is going to suck down
all of the RAM).
Those kinds of restrictions will lessen over time as we get devices with more and more RAM and CPU power. But one thing to keep in mind... Keeping RAM charged costs power. A lot of power, actually, especially on a ultra-low-voltage processor like modern ARM architectures. Just dumping in more RAM isn't the whole answer (though that is what Android makers have done, by and large, which leads to worse battery performance per watt hour of battery capacity little by little).
But Safari on iOS is a perfect example of what I was talking about. It might not waste the RAM needed to fully "preload" all of those background tabs, but it
certainly restores state. In Safari's tab switcher, even with those tabs "unloaded" from RAM, it maintains the illusion that it has by showing a screenshot, and reloading the page quickly as you switch to it. Of course, if your device is slow or your network connection is no longer available, then tough luck, but it
will reload it next time you have a network connection.
Honestly, I've never noticed the Mail photos download thing you mentioned... You mean if you are actively downloading a photo (and it is taking a long time), and you switch back to open different email, that the photo doesn't keep downloading in the background? I guess mine usually download pretty fast. It isn't something that is regularly a problem, but then, I don't use email to move large files around (that's what God invented Dropbox, GoodSync, and FTP for)...
Either way, that's not restoring state, it is concurrency. And, again, all bow to the almighty battery life god. If you aren't
directly responding to user interaction, and iOS needs your RAM, you say bye bye. No exceptions.
Now, it would be better if, just as it was told "the user switched views, you must die", the app wrote the partially downloaded file out to "disk" (the sandboxed storage for the app) before it killed the download process? I guess it doesn't, but that'd be better for sure. But Mail itself, generally, certainly restores state to where you left it whether it was three seconds ago you launched it, or three days ago you launched it (with the same mailbox open and whatnot).
And, I should add, it isn't just iOS. Many of the best apps on Android work the same exact way (and Google apps on iOS for that matter). Chrome restores your tabs when you launch it. Google Maps remembers the last location you looked at (it might have to reload the map data from the network, but it remembers the coordinates). I haven't spent enough time with a Windows Phone to be sure, but I bet there's even a focus on this on Windows Phone (knowing Microsoft, probably irregularly implemented).
I guess what I was saying is... Restoring state is winning. And it should be an option, at least. Probably the default.