I may have the same designs as some other posters here (I have been seriously developing applications since July 2012), but I found a solution that combines SharedPreferences as well as onSaveInstanceState ().
My application has a splash screen activity that reads values from SharedPreferences and assigns them to the appropriate variables. In addition, each action that I do has its own onSaveInstanceState () method, and I take care of all the data that I need to store in SharedPreferences there, in every action. Since onSaveInstanceState () is started before the application or activity closes normally, it must support data values under all normal circumstances.
This may not be the most effective solution for the code, especially in large applications with many types of activities, but, as far as I know, my tests protect your application from data loss in 99% of cases.
If a more experienced developer would like to listen and confirm or disprove it, I am sure that this will enrich the question and answer.
source share