به کار گیری از داده های کپسوله گردیده در intent

به کار گیری از داده های کپسوله گردیده در intent

بهترین و اولین مرجع رسمی مقالات طراحی اپلیکیشن

به کار گیری از داده های کپسوله گردیده در intent

۱۶۲ بازديد

طرز های متفاوت برای برقراری رابطه با خدمات
رویکرد های مختلفی برای تبادل داده و تعامل در میان activity و خدمت وجود داراست. مطالب تحت طرز های ممکن برای نیل به‌این غرض را مذکور و نحوه پیشنهادی خویش را در چنگ طراحی اپلیکیشن در مشهد  شما قرار میدهد.

به کار گیری از داده های کپسوله گردیده در intent
در یک سناریوی معمولی، نیازی به هیچ تعامل بی واسطه (فی مابین خدمت و activity) نیست. خدمت داده های کپسوله گردیده در intent را از کامپوننت استارت کننده (فراخواننده ی خدمت) اخذ نموده و عملیات مورد نیاز را به اجرا می‌رساند. قابل ذکر میباشد که برای این خواسته notification ضروری وجود ندارد. در واقع چنانچه خدمت محتوای یک content provider را با داده های تازه بروز آوری می نماید، خویش کامپوننت قابل انعطاف افزاری سابق الذکر activity را از این واقعه مطلع کرده و هیچ مبادرت یا این که مرحله ی دیگری در خدمت مایحتاج وجود ندارد. این شیوه هم برای خدمت های محلی و هم برای خدمت هایی که در فرآیند مختص به خویش ایفا می گردند، قابل طراحی و به کارگیری خواهد بود.



به کارگیری از receiver
می قدرت برای تعامل و رابطه دربین activity و خدمات از broadcast ها و receiver هایی که به‌این broadcast ها گوش میدهند، سود گرفت. مثلا، activity شما قادر است یک broadcast receiver برای گوش دادن به event ای معلوم تصویب نماید و خدمت متبوع رخداد افتادن event های مربوطه را به خارج (کاپوننت های دیگر) اعلان کند. این طرز بسیار معمول بوده و اکثر وقت ها وقتی به کارگیری میشود که خدمت باید بعد از به اجرا رساندن پردازش به activity این واقعه را اعلان نماید.

شیوه ذکر شده برای خدمت های محلی و خدمت هایی که در پروسه صاحب خانه و مختص خویش انجام میشوند، قابل به کار گیری است.



اتصال activity به خدمت محلی
در‌صورتی‌که activity و service هر دو در فرایندی یکسان ایفا شوند، در‌این حالت activity قوی خواهد بود به خدمت مستقیما به طور دو طرفه وصل خواهد شد. نحوه حاضر از بین آیتم هایی که تا به امروز تیتر گردیده، با صرفه ترین بوده و برای وقتی که activity نیاز داراست با خدمت با سرعت بالا تبادل داده داشته باشد بسیار مطلوب میباشد.

ناگفته نماند که‌این شیوه فقط برای خدمت های محلی (خدمت هایی که) قابل طراحی و به کارگیری میباشد.



Handler و ResultReceiver یا این که Messenger
در شرایطی‌که خدمت با activity تعامل دو طرفه داشته باشد (اطلاعاتی را به activity برگرداند)، در آن شکل میتواند از روش داده های کپسوله گردیده در intent که از activity اخذ می نماید، آبجکتی از مال Messenger اخذ کند. در‌صورتی‌که که Messenger به Handler در activity متصل باشد، بعد service توانا خواهد بود آبجکت هایی از محصول Message را به activity ارسال کند.

Messenger در واقع اینترفیس parcelable را طراحی می نماید، به‌این مفهوم که می قدرت آن را به روند دیگر ارسال کرده و با به کار گیری از این آبجکت Message هایی را به Handler در activity ارسال نمود.

Messenger همینطور متدی به اسم getBinder را ارائه می‌دهد. این اسلوب قابلیت و امکان ارسال آبجکتی از کالا Messenger به activity را آماده می کند. activity نیز متعاقبا قوی خواهد بود Message های (مثال هایی از کلاس Message که دربردارنده تعریف و آبجکت های داده ای دلخواه میباشد) زیادی را به خدمت متبوع ارسال نماید.

این شیوه برای خدمت های محلی که در پروسه خویش اعمال می گردند، قابل به کار گیری است.



اتصال به خدمت در مراحل دیگر با به کارگیری از AIDL
به خواسته تبادل داده و اتصال (bind) به سرویسی که در فرآیند دیگری در اکنون انجام میباشد، اپ نویس می بایست از IPC (رابطه در بین پردازشی) امداد بگیرد. برای نیل بدین غرض، آغاز مورد نیاز میباشد یک پوشه AIDL ساخت‌و‌ساز نماید که به طور تقریب شبیه interface های جاوا میباشد با این تفاوت که پسوند آن .aidl بوده و صرفا اذن ی ارث بری و توسعه و گسترش دیگر پوشه های AIDL را داراست.

پیشنهاد میشود از این طرز وقتی به کار گیری نمائید که ما یحتاج باشد به سرویسی که در مراحل دیگری در اکنون ایفا میباشد متصل گردید. از جمله وقتی که نرم افزار های دیگر درخواست به کارگیری از خدمت متبوع را داشته باشند بایستی از این منش استفاده نمود.



عده‌ بندی
در‌این مقاله با مضمون‌ خدمت در اندروید، گونه های آن و فعال سازی خدمت‌ها به طور مختصر توضیحاتی را ارائه دادیم. در انتها بد وجود ندارد نکاتی را نیز دراین مورد ذکر کنیم.

هر یک از کامپوننتهای اساسی اندروید میتوانند یک started service را استارت نمایند.
هنگامی یک started service استارت به اعمال می‌نماید، اجرای آن تا ابد می تواند ادامه داشته باشد تا‌زمانی‌که یکی متدهای stopService یا این که stopSelf فراخوانی گردد.
خدمت به طور پیش‌فرض روی نخ main ایفا می شود.
چرخه حیات یک started service غیروابسته از کامپوننتی میباشد که خدمت را شروع کرده و این یعنی خدمت می تواند به اجرایش ادامه دهد حتی در صورتی‌که که کامپوننت آغازگر خدمت از میان رفته باشد.
تا كنون نظري ثبت نشده است
ارسال نظر آزاد است، اما اگر قبلا در فارسی بلاگ ثبت نام کرده اید می توانید ابتدا وارد شوید.