Android SavedState

Updated 11 October 2021

Save

Android SavedState is used to save information regarding the UI’s state of your application. So when users will always come back to the application then find it in the same state they had left it in.

A process is created for every launched application on android for running. The application process is killed when the application is no longer in the foreground.

Use android SavedState in this case to allow users to present the application in the same state they left it in, even if its process may have been killed by the system.

Approaches:

For retaining a small amount of UI related data use onSaveInstanceState() in the following situations:

Call onSaveInstanceState() in situations when activity stops, but not finished, by the system. It is not in the case when the user explicitly closes the activity or in other cases, of finish() is call.

For retaining large and complex UI-related data use ViewModel which makes the code more modular by separating the data from UI code.

ViewModels always help to handle the situation of configuration changes because ViewModel is not destroying data on a configuration change.

But for the process stop situation ViewModel destroy as well so we need to restore UI data using onSaveInstance().

 

Implementation:

1. Initial setup:

Add below dependency in build.gradle in your app module.

2. Saving and retrieving ViewModel state with SaveStateHandle:

Finally the ViewModel class will look like this

3. Using ViewModel with your activity by ViewModelProvider call

In your activity or fragment’s onCreate, update your call to ViewModelProvider to:

Conclusion:

In this blog, you have learned to persist data for UI state. Using this approach everywhere is not a good idea and is not a replacement over SharedPreferences sometimes a Room Database or SharedPreferences might work better.

 

Thanks for reading this blog. You can also check other blogs from here.

author
. . .

Leave a Comment

Your email address will not be published. Required fields are marked*


Be the first to comment.

Start a Project


    Message Sent!

    If you have more details or questions, you can reply to the received confirmation email.

    Back to Home