میخوای وارد بازار کار بشی و محصولات خودت رو بفرشی همین الان ثبت نام کن
0

آموزش Intent در اندروید / Intent صریح و ضمنی

این مبحث به آموزش نحوه ی استفاده از Intent جهت برقراری ارتباط بین کامپوننت ها و اجزا نرم افزاری مختلف اندروید می پردازد

Intent ها پیغام هایی هستند که به واسطه ی آن ها از سیستم تقاضای انجام کار یا عملیات خاصی را می کنید. در واقع با استفاده از آبجکت intent می توانید بین کامپوننت های مختلف یک اپلیکیشن و حتی کامپوننت های نرم افزاری دیگر اپلیکیشن ها تعامل بر قرار نمایید و اطلاعات رد و بدل کنید. برای مثال، یک Activity می تواند activity دیگر را جهت عکس گرفتن اجرا کند. به وسیله ی intent ها می توانید service ها و Activity ها را اجرا کنید یا مقادیری را از یک activity به activity دیگری ارسال نمایید.

Intent ها آبجکت یا نمونه هایی از جنس کلاس android.content.Intent هستند. کد شما می تواند آبجکت های intent را به سیستم اندروید ارسال کرده و صریحا اعلام کند کدام کامپوننت ها هدف و مد نظر شما هستند. به طور مثال، می توانید یک activity را به کمک متد ()startActivity راه اندازی کنید (تعریف کنید که این intent باید فقط به قصد اجرای activity بکار گرفته شود.)

داده های مورد نظر را می توانید برای ارسال به activity دیگر داخل Bundle قرار دهید. داده هایی که داخل این آبجکت قرار دادید توسط کامپوننت مد نظر دریافت و مورد استفاده قرار می گیرد.

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

این این جریان تعامل و تبادل اطلاعات در زیر به تصویر کشیده شده است.

Capture 3

 

 


 راه اندازی Activity ها به وسیله ی آبجکت intent

به منظور راه اندازی یک ،activity می توانید متد ( startActivity ( intent را بکار ببرید. این متد در سطح آبجکت Context تعریف شده است. کلاس Activity از این کلاس پدر ارث بری داشته و متعاقبا متد ذکر شده را نیز از این کلاس به ارث می برد و آن را در بدنه ی خود فراخوانی می کند. 

intent

 

کد زیر نحوه ی راه اندازی یک activity از طریق آبجکت intent را به نمایش می گذارد:

 

# Start the activity connect to the
# specified class 
Intent i = new Intent(this, ActivityTwo.class);
startActivity(i);

Activity هایی که توسط activity های دیگر راه اندازی می شوند در اصطلاح sub-activity خوانده می شوند.

 


راه اندازی service ها

گفتنی است که توسط intent ها می توان service ها را نیز راه اندازی نمود. کافی است متد. را فراخوانی startService (Intent نمایید

 


 ارسال intent های صریح / explicit و ضمنی / implicit

در اندروید دو نوع intentوجود دارد. intent صریح و intent ضمنی.

Intent صریح یا explicit برای صدا زدن و به اجرا در آوردن service یا Activity مشخصی مورد استفاده قرار می گیرد.

در این سناریو کاربر نمی تواند تصمیم بگیرد رخداد مورد نظر توسط کدام کامپوننت انجام شود، برای مثال شرایطی را در نظر بگیرید که برنامه ی کاربردی شما دو Activity دارد و شما می خواهید از طریق activity اول به activity دوم راه پیدا کنید. در این حالت لازم است از intent صریح استفاده نمایید. به عبارت دیگر به منظور برقراری ارتباط بین بخش های داخلی یک نرم افزار از intent صریح استفاده می شود.

Intent های ضمنی هدف و کامپوننت مد نظر خود را با نام مشخص نمی کنند و معمولا برای راه اندازی کامپوننت دیگر نرم افزار ها مورد استفاده قرار می گیرند. به بیان دیگر زمانی که می خواهید سیستم اندروید عملیاتی را انجام دهد و برای شما چندان اهمیتی ندارد این کار توسط کدام activity یا service انجام می شود، می بایست از intent ضمنی استفاده نمایید. در این سناریو سیستم اندروید تمامی کامپوننت هایی که قابلیت انجام درخواست را دارند، فهرست می کند و کاربر می تواند تصمیم بگیرد درخواست توسط کدام کامپوننت اجرا شود.

کد زیر نحوه ی ایجاد یک intent صریح و ارسال آن به سیستم Android جهت راه اندازی activity دیگر را نمایش می دهد.

 

Intent i = new Intent(this, ActivityTwo.class);
i.putExtra("Value1", "This value one for ActivityTwo ");
i.putExtra("Value2", "This value two ActivityTwo");

 

همان طور که در بالا ذکر شد، هنگامی که intent درخواست انجام عملیات خاصی را از سیستم اندروید می کند، اندروید تمامی نرم افزارهایی که برای اجرای این درخواست و عملیات ثبت شده اند را شناسایی کرده و برای کاربر فهرست می کند. این کار توسط intent filter صورت می پذیرد. برای مثال، کد زیر از اندروید درخواست مشاهده ی یک صفحه ی وب را می کند. تمامی مرورگرهای وب که برای این منظور ثبت شده اند، توسط اندروید شناسایی شده و برای کاربر جهت انتخاب، نمایش داده می شود. این کار توسط intent filterا مکان پذیر می باشد.

کد زیر به سیستم اندروید اعلام می کند که یک صفحه ی وب را باز کند. تمامی مرورگر های نصب شده بر روی سیستم که برای این intent ثبت شده اند، لیست می شوند و کاربر یکی از آن ها را برای مشاهده ی صفحه انتخاب می کند.

 

Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.vogella.com"));
startActivity(i);

 

 


امیدواریم آموزش Intent در اندروید / Intent صریح و ضمنی نیز برای شما مفید واقع شده باشد و ادامه آموزش برنامه نویسی اندروید رو دنبال کنید . برای مطالعه پست‌ها بیشتر ، ما را در مدرسه کدنویسی تلگرام  و یا در تی جوان اینستاگرام دنبال کنید.

نظراتتون رو زیر همین پست با ما به اشتراک بگذارید.

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

×

سلام کاربر عزیز

هر سوالی دارید در این بخش هستیم تا شما رو راهنمائی کنیم

روی لوگومون کلیک کنید

× چطور میتونم کمکتون کنم؟