Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Android

ความแตกต่างระหว่าง Parcel can และ Serializable ใน android


ตัวอย่างนี้แสดงให้เห็นความแตกต่างระหว่าง Parcel can และ Serializable ใน Android

ซีเรียลไลซ์ได้

Serializable เป็นอินเตอร์เฟสที่ทำเครื่องหมายได้หรือเราสามารถเรียกได้ว่าเป็นอินเตอร์เฟสที่ว่างเปล่า ไม่มีวิธีการดำเนินการล่วงหน้า Serializable กำลังจะแปลงวัตถุเป็นสตรีมไบต์ เพื่อให้ผู้ใช้สามารถส่งข้อมูลระหว่างกิจกรรมหนึ่งไปยังอีกกิจกรรมหนึ่ง ข้อได้เปรียบหลักของการทำให้ซีเรียลไลซ์ได้คือการสร้างและส่งข้อมูลนั้นง่ายมาก แต่เป็นกระบวนการที่ช้าเมื่อเปรียบเทียบกับการแพ็คพัสดุ

ตัวอย่างง่ายๆ ของการทำให้เป็นอันดับที่แสดงด้านล่าง –

<ก่อน>นำเข้า java.io.Serializable;คลาส serializableObject ใช้ Serializable { ชื่อสตริง; serializableObject สาธารณะ (ชื่อสตริง) { this.name =ชื่อ; } สตริงสาธารณะ getName() { ชื่อกลับ; }}

พัสดุได้

พัสดุได้เร็วกว่าทำให้เป็นอนุกรม Parcelable กำลังจะแปลงวัตถุเป็นสตรีมไบต์และส่งผ่านข้อมูลระหว่างสองกิจกรรม การเขียนโค้ดสำหรับส่งพัสดุนั้นซับซ้อนเล็กน้อยเมื่อเปรียบเทียบกับการทำซีเรียลไลซ์เซชัน ไม่สร้างวัตถุชั่วคราวมากขึ้นในขณะที่ส่งข้อมูลระหว่างสองกิจกรรม

ตัวอย่าง Parcel อย่างง่ายที่แสดงด้านล่าง –

นำเข้า android.os.Parcel;นำเข้า android.os.Parcelable;คลาส parcleObject ใช้ Parcelable { ชื่อสตริงส่วนตัว; parcleObject ที่ได้รับการป้องกัน (ในพัสดุ) { this.name =in.readString (); } parcleObject สาธารณะ (ชื่อสตริง) { this.name =ชื่อ; } สตริงสาธารณะ getName() { ชื่อกลับ; } โมฆะสาธารณะ setName (ชื่อสตริง) { this.name =ชื่อ; } ผู้สร้างสุดท้ายคงที่สาธารณะ  CREATOR =ผู้สร้างใหม่  () { @Override public parcleObject createFromParcel (Parcel in) { ส่งคืน parcleObject ใหม่ (ใน); } @Override สาธารณะ parcleObject[] newArray (ขนาด int) { ส่งคืน parcleObject ใหม่ [ขนาด]; } }; @Override สาธารณะ int อธิบายเนื้อหา () { กลับ 0; } @แทนที่โมฆะสาธารณะ writeToParcel (ปลายทางของพัสดุ แฟล็ก int) { dest.writeString (ชื่อนี้); }}