This biggest issue with something like "onRetainNonConfigurationInstance()" is that it won't account for the destruction and recreation of your app's activities during the OS's Process Lifecycle. See the documentation for this here. Basically, when your app is in the background and as you use other device apps, the OS will begin to kill processes to release system resources. When this happens and you then reopen your app, the OS attempts to recreate your application through the savedInstanceState.
For this reason, regardless of whether my application supports landscape mode or not, I always make sure that orientation changes work seamlessly to recreate state without using anything like onRetainNonConfigurationInstance.
Here's a simple test to run to check for recreation of app state after it's released by the OS:
- Open your application to the page in question.
- Push the "Home" button on your phone.
- Open up no less than 3 high resource usage apps with long scrolling listViews ( I use Facebook, Youtube and Google Play store).
- In each app scroll the listview down a good amount to use system resources.
- After you're done with all 3 apps, reopen your app.
What happened? If you've handled saving your state correctly, you should see the application recreating the view from the savedInstanceState bundle that you saved. You could also see a recreated view with lost data OR a null pointer exception.
As for your second point, smitalm is correct, the OS does handle the saving of state of basic view elements for you when correctly configured. For more info, check out the Recreating an Activity documentation.
Hope this helps.