GNStateManager - noxiouswinter/gnlib_android GitHub Wiki
GNStateManager makes saving and retrieving the state/fields of an Activity etc as easy as annotating the required fields and adding a call to the GNStateManager in the OnCreate and OnPause methods. Custom objects are supported and their fields can be selectively saved/retrieved too.
Usage
In your Activity, annotate the fields you need to persist with the '@GNState' annotation.
public class TestActivity extends Activity {
@GNState
private StudentInfo studentInfo;
Also annotate the class definition and the required fields of any custom object.
@GNState
public class StudentInfo {
@GNState
public String name;
@GNState
public int age = 0;
}
In the onCreate method of the Activity, initialize GNStateManagerFactory(you need to do this only once anywhere) and pass in the Activity object to the retrieve function.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Required only once.
GNStateManagerFactory.init(this);
//Populate this object with the state field objects.
GNStateManagerFactory.get().retrieve(this);
}
Also in the onPause function, call the store function with the Activity object.
@Override
protected void onPause() {
GNStateManagerFactory.get().store(this);
super.onPause();
}
Limitations
GNStateManager will not work well with Activities or other classes with multiple instances. The state objects like StudentInfo in above example but does not need to be singletons.