I have a couple objects, Location, in my app stored in an ArrayList and use parcelable to move these between activities. The code for the object looks like this:
The preferred way would be to implement an IntentService probably
From documentation of Parcel:
Parcel is not a general-purpose serialization mechanism. This class (and the corresponding Parcelable API for placing arbitrary objects into a Parcel) is designed as a high-performance IPC transport. As such, it is not appropriate to place any Parcel data in to persistent storage: changes in the underlying implementation of any of the data in the Parcel can render older data unreadable.
Since parcelable doesn't help to place your data in persistent storage (see StenSoft's answer), you can use gson to persist your Location instead:
Saving a Location:
val json = Gson().toJson(location)
sharedPreferences.edit().putString("location", json).apply()
Retrieving a Location:
val json = sharedPreferences.getString("location", null)
return Gson().fromJson(json, Location::class.java)
In case you're still using Java, replace val
with String
, Gson()
with new Gson()
, ::class.java
with .class
and end each line with a semicolumn.