حسام رسولیان
برنامه نویس موبایل

تفاوت های PARCELABLE و SERIALIZATION

در برنامه نویسی اندروید زمانی که نیاز داشته باشیم تا اطلاعاتی و از یک صفحه به صفحه دیگه انتقال بدیم راه های مختلفی داریم. مثلا میتونیم یه متغیر سراسری استاتیک داشته باشیم و اطلاعاتمون و داخل اون ذخیره کنیم اما خب شاید این روش به نوعی فاجعه باشه مخصوصا که زمانی که تعداد اطلاعاتمون زیاد هست. راه بهتر استفاده از Intent و دستور putextra هست. این روش برای ارسال اطلاعات ساده میتونه مفید باشه اما زمانی که شما از یک کلاس آبجکت ساخته باشید نمیتونید با این دستور بصورت پیشفرض آبجکت ارسال کنید. اینجا ما دوتا راه داریم استفاده از PARCELABLE و SERIALIZATION. من دراین مطلب قصد ندارم روش کار کردن با این دو تکنیک آموزش بدهم فقط میخوام ببینیم این دو روش چه تفاوت هایی با هم دارند.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

SERIALIZATION

به طور پیش فرض در برنامه نویسی برای ارسال آبجکت از SERIALIZATION باید استفاده کنیم و جز استاندازد های خود جاوا هست نه Android SDK و فقط کافیست که اینترفیس مخصوص آن را در کلاس خود پیاده سازی کنیم به همین سادگی. اما از اونجایی که برای به دست آوردن هرچیزی باید بهای آن را هم پرداخت کنیم سادگی این روش باعث میشه که آبجکت های خیلی زیادی زمان استفاده از آن تولید شود که در سرعت برنامه شاید مشکل ایجاد کند که به دلیل reflection هست.

Parcelable

Parcelable هم یک اینترفیس دیگری هست که دقیقا کارهای قبلی و برای ما انجام میده اما با روش بهینه تر. همچنین Parcelable بصورت اختصاصی برای اندروید طراحی شده است یعنی داخل JDK نیست داخل Android SDK قرار داره. این روش سرعت خیلی بیشتری نسبت به SERIALIZATION داره و همچنین کاملا بهینه تر هم می باشد. اما باز هم برای استفاده از آن باید بهایی پرداخت کرد و اون هم نوشتن تعداد زیاد کد های تکراری, عیب یابی دشوارتر و...

در نمودار زیر به خوبی تفاوت سرعت اجرای PARCELABLE و SERIALIZATION و مشاهده می کنید.

در برنامه نویسی اندروید زمانی که نیاز داشته باشیم تا اطلاعاتی و از یک صفحه به صفحه دیگه انتقال بدیم راه های مختلفی داریم. مثلا میتونیم یه متغیر سراسری استاتیک داشته باشیم و اطلاعاتمون و داخل اون ذخیره کنیم اما خب شاید این روش به نوعی فاجعه باشه مخصوصا که زمانی که تعداد اطلاعاتمون زیاد هست. راه بهتر استفاده از Intent  و دستور putextra هست. این روش برای ارسال اطلاعات ساده میتونه مفید باشه اما زمانی که شما از یک کلاس آبجکت ساخته باشید نمیتونید با این دستور بصورت پیشفرض آبجکت ارسال کنید. اینجا ما دوتا راه داریم استفاده از PARCELABLE و SERIALIZATION. من دراین مطلب قصد ندارم روش کار کردن با این دو تکنیک آموزش بدهم فقط میخوام ببینیم این دو روش چه تفاوت هایی با هم دارند.

*SERIALIZATION*
به طور پیش فرض در برنامه نویسی  برای ارسال آبجکت از SERIALIZATION باید استفاده کنیم و جز استاندازد های خود جاوا هست نه Android SDK و فقط کافیست که اینترفیس مخصوص آن را در کلاس خود پیاده سازی کنیم به همین سادگی. اما از اونجایی که برای به دست آوردن هرچیزی باید بهای آن را هم پرداخت کنیم سادگی این روش باعث میشه که آبجکت های خیلی زیادی زمان استفاده از آن تولید شود که در سرعت برنامه شاید مشکل ایجاد کند که به دلیل reflection هست.

*Parcelable*
Parcelable هم یک اینترفیس دیگری هست که دقیقا کارهای قبلی و برای ما انجام میده اما با روش بهینه تر. همچنین Parcelable بصورت اختصاصی برای اندروید طراحی شده است یعنی داخل JDK نیست داخل Android SDK قرار داره. این روش سرعت خیلی بیشتری نسبت به SERIALIZATION داره و همچنین کاملا بهینه تر هم می باشد. اما باز هم برای استفاده از آن باید بهایی پرداخت کرد و اون هم نوشتن تعداد زیاد کد های تکراری, عیب یابی دشوارتر و...
در نمودار زیر به خوبی تفاوت سرعت اجرای PARCELABLE و SERIALIZATION و مشاهده می کنید.
||https://tosinso.com/files/get/f463396a-35c6-4540-806b-09c75166d82f||

حسام رسولیان
حسام رسولیان

برنامه نویس موبایل

کارشناسی فناوری اطلاعات برنامه نویس موبایل با زبان های جاوا, کاتلین, دارت(فلاتر) CCNA,LPIC

19 اردیبهشت 1397 این مطلب را ارسال کرده

نظرات