Each time a non-transient state variable is added to the AppState class, you will have to assign the new field in AppState.restore(). You may avoid that by assigning the values using reflection instead - but I personally prefer doing it this way.

Using the AppState

The AppState can be accessed from anywhere as follows:

AppState.getInstance()

The AppState needs to be restored on Application start-up. I would do this in the dispatcher activity's onCreate():

AppState.getInstance().restore();

The AppState can be committed as follows:

AppState.getInstance().commit();

You would want to commit the AppState in the onPause() on Activities where the AppState has been updated.

Also, if you're going to be accessing the class from different threads, remember to ensure it's thread-safe.

I've created a simple working app which you can access from GitHub here.