1

I am making a small game and I want to save all the variables (objects and basic types) when closing the app to be able to load the saved game later on.

Here are some of the variables:

    String playerName;
    Duration time;
    Item[] inventory=new Item[20]; //enum
    int inventoryTotalItems=0; 

It is basically the same situation than save variables after quitting application? or How can I save an activity state using the save instance state? but what I want to save are Objects, so I am not sure I can use the preferences or the Bundle for that. I also will want to store more than one preference to be able to load different saved games. Can I do this with onPause() and onResume()?

Thanks.

JAgüero
  • 403
  • 1
  • 4
  • 14

1 Answers1

1

Add this in your dependencies(in build.gradle file):

implementation 'com.google.code.gson:gson:2.8.9'

And then you can save objects like this:

SharedPreferences sp = getPreferences(MODE_PRIVATE);
SharedPreferences.Editor pe = sp.edit();
Gson gson = new Gson();
String j = gson.toJson(myObj);
pe.putString("MyObject", j);
pe.apply();

And when you want to access the object later:

SharedPreferences sp = getPreferences(MODE_PRIVATE);
Gson gson = new Gson();
String j = sp.getString("MyObject", null);
MyObject myObj = gson.fromJson(j, MyObject.class);

I think you should save in onPause().

Sujal Kumar
  • 1,054
  • 10
  • 23