Use parcelable to store item as sharedpreferences?

前端 未结 3 1009
谎友^
谎友^ 2021-02-05 04:26

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:



        
相关标签:
3条回答
  • 2021-02-05 04:36

    The preferred way would be to implement an IntentService probably

    0 讨论(0)
  • 2021-02-05 04:45

    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.

    0 讨论(0)
  • 2021-02-05 04:51

    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.

    0 讨论(0)
提交回复
热议问题