این سری نوشته ها خلاصه کتاب اموزشی به نام Android Programming: The Big Nerd Ranch Guide که سعی خواهم کرد در حال مطالعه کتاب نکات خلاصه و مفید رو بنویسم
اجرای برنامه های اندروید با جابجایی بین اکتیویتی ها انجام میشود و به راحتی میتوان با ساخت intent و معرفی نام اکتیویتی و متد startActivity به ان اکتیویتی رفته و کارها را انجام داد . اما ممکن است زمانی فقط نیاز به انجام کاری باشد و فرقی نمیکند در کدام اکتیویتی یا برنامه انجام میشود و بسته به برنامه هایی که کاربر روی دستگاه خود دارد انتخاب هایش متفاوت می باشد . یک مثال بسیار متداول اشتراک گذاری ( share ) است . در هر برنامه یک منو اشتراک گذاری وجود دارد که با زدن ان ، گزینه هایی از برنامه های که دارید نشان داده میشود و میتوانید یک برنامه را انتخاب کنید . به این روش implicit intent میگویند ، یعنی اجرای غیر صریح اکتیویتی .
در اجرای غیر صریح به سیستم گفته میشود که نیاز به انجام چه کاری دارید و سیستم یک اکتیویتی را در اپلیکیشن مرتبط اجرا خواهد کرد .حال اگر اکتیویتی های بیشتری وجود داشته باشد که میتوانند ان کار را انجام دهند سیستم گزینه هایی را برای انتخاب ارائه خواهد کرد . برای اجرای غیر صریح اکتیویتی باید مثل زیر عمل کنیم :
Intent(Intent.ACTION_SEND).apply { type = "text/plain" putExtra(Intent.EXTRA_TEXT, " Message ") putExtra(Intent.EXTRA_SUBJECT, " Subject ") }.also { intent -> startActivity(intent) } }
در اینجا ابتدا از طریق سازنده ( constructor ) کلاس Intent ، نوع کار( action ) مورد نظر را از طریق یکسری string را که جزو ثابت های ( constant ) تعریف شده در Intent می باشد می سازیم . این پارامتر به سیستم خواهد گفت که قصد چه کاری را داریم . نام این پارامتر ها با ACTION شروع میشود و میتوان نمونه های زیادی از آن را در گوگل جستجو کرد .
علاوه بر تعریف نوع کاری که میخواهیم انجام دهیم میتوان اطلاعاتی را نیز به اکتیویتی مورد نظر فرستاد که بسته به نوع action این اطلاعات دریافتی متفاوت می باشد ، در مثال بالا اینکار با putExtra انجام گرفت و همانطور که می بینید در اینجا نیز از ثابت های تعریف شده در Intent برای تشخیص نوع اطلاعات ارسالی استفاده میشود و با اینکار اکتیویتی هدف می فهمد که چه اطلاعاتی را دریافت کرده است.