Junior — Middle
Πώς πραγματοποιείται η σειριοποίηση και η αποσειριοποίηση αντικειμένων με το Parcelable στο Android;
sobes.tech AI
Απάντηση από AI
Στο Android, το interface Parcelable χρησιμοποιείται για αποτελεσματική σειριοποίηση αντικειμένων, ώστε να μπορούν να μεταφερθούν μεταξύ συστατικών (π.χ., μεταξύ Activity μέσω Intent).
Σειριοποίηση (εγγραφή αντικειμένου):
- Η κλάση πρέπει να υλοποιεί το interface
Parcelable. - Υπερκαλύψτε τη μέθοδο
writeToParcel(Parcel dest, int flags), όπου γράφετε όλα τα πεδία του αντικειμένου στοParcelχρησιμοποιώντας μεθόδους όπωςwriteInt(),writeString(), κ.λπ.
Αποσειριοποίηση (ανάγνωση αντικειμένου):
- Δημιουργήστε ένα στατικό πεδίο
CREATORτύπουParcelable.Creator<T>, που υλοποιεί τις μεθόδους:createFromParcel(Parcel in)— διαβάζει δεδομένα από τοParcelκαι δημιουργεί το αντικείμενο.newArray(int size)— δημιουργεί έναν πίνακα αντικειμένων.
- Στον κατασκευαστή που δέχεται ένα
Parcel, διαβάστε τα πεδία με την ίδια σειρά που γράφτηκαν.
Παράδειγμα:
class User(val name: String, val age: Int) : Parcelable {
constructor(parcel: Parcel) : this(
parcel.readString() ?: "",
parcel.readInt()
)
override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeString(name)
parcel.writeInt(age)
}
override fun describeContents() = 0
companion object CREATOR : Parcelable.Creator<User> {
override fun createFromParcel(parcel: Parcel) = User(parcel)
override fun newArray(size: Int) = arrayOfNulls<User?>(size)
}
}
Έτσι, το αντικείμενο μπορεί να μεταφερθεί μέσω Intent:
intent.putExtra("user", user)
και να ανακτηθεί με:
val user = intent.getParcelableExtra<User>("user")