اکتیویتی در اندروید

معرفی اکتیویتی ها کلاس Activity یکی از مهمترین کامپاننت های برنامه اندرویدی است و بخشی اساسی از مدل اپلیکیشن این پلتفرم نحوه راه اندازی و قرار گرفتن اکتیویتی ها با یکدیگر است. بر خلاف پارادایم (الگوی) برنامه نویسی که در آن برنامه ها با متد main() راه اندازی می شوند ، سیستم Android یک نمونه اکتیوتی را بوسیله فراخوانی متد کال بک مشخص ای که مرتبط با وضعیت چرخه حیات است ،آغاز می کندمفاهیم اکتیویتی هاتجربه برنامه موبایل در مقایسه با برنامه های دسک تاپ متفاوت است زیرا تعامل کاربر با برنامه همیشه از یک مکان شروع نمی شود. در عوض ، مسیر حرکتی کاربر غالباً غیر قطعی آغاز می شود. به عنوان مثال ، اگر یک برنامه ایمیل از صفحه اصلی خودش باز کنید ، ممکن است لیستی از ایمیل ها را ببینید. در مقابل ، اگر از برنامه رسانه های اجتماعی استفاده می کنید که سپس این برنامه ایمیل را اجرا یا راه اندازی می کند ، ممکن است برای ساخت ایمیل مستقیماً به صفحه ساخت برنامه ایمیل بروید.کلاس Activity برای تسهیل این پارادایم (الگو) طراحی شده است. وقتی یک برنامه ؛ برنامه دیگری را فراخوانی میکند ، برنامه صدا زده شده به جای برنامه به صورت یک اکتیویتی در برنامه دیگر فراخوانی می شود.که باعث میشود برنامه شما کاملا اتمیک باشه به این ترتیب ، اکتیویتی به عنوان نقطه ورود تعامل یک برنامه با کاربر عمل می کند. شما یک اکتیویتی را به عنوان یک زیر کلاس از کلاس Activity پیاده سازی می کنید.یک اکتیویتی پنجره ای را فراهم می کند که برنامه؛ UI خود را در آن ترسیم می کند. این پنجره معمولاً صفحه را پر می کند ، اما ممکن است کوچکتر از صفحه باشد و در بالای پنجره های دیگر شناور باشد. به طور کلی ، یک اکتیویتی یک صفحه را در برنامه پیاده سازی می کند. به عنوان مثال ، یکی از اکتیویتی های برنامه ممکن است صفحه تنظیمات را اجرا کند ، در حالی که اکتیویتی دیگری صفحه انتخاب عکس را پیاده سازی می کند.اکثر برنامه ها حاوی چندین صفحه هستند ، به این معنی که چندین اکتیویتی را شامل می شوند. به طور معمول ، یک اکتیویتی در برنامه به عنوان اکتیویتی اصلی مشخص می شود ، که اولین صفحه نمایش هنگام راه اندازی اپ توسط کاربر است. سپس هر اکتیویتی می تواند اکتیویتی دیگری را شروع کند تا اکشن های مختلفی انجام دهد. به عنوان مثال ، اکتیویتی اصلی در یک برنامه ایمیل ساده ممکن است صفحه ای را نشان دهد که صندوق ورودی ایمیل را نشان می دهد. از آنجا ، اکتبویتی اصلی ممکن است اکتیویتی های دیگری را شروع کند که صفحه هایی برای کارهایی مانند نوشتن ایمیل و باز کردن ایمیل های شخصی را فراهم می کند.اگرچه اکتیویتی ها با هم همکاری می کنند تا تجربه کاربری منسجمی را در یک برنامه ایجاد کنند ، اما هر اکتیویتی فقط به اکتیویتی های دیگربصورت کم محدود می شود. معمولاً کمترین وابستگی در بین اکتیویتی یک برنامه وجود دارد. در واقع ، اکتیویتی ها اغلب اکتیویتی های مربوط به برنامه های دیگر را شروع می کنند. به عنوان مثال ، یک برنامه مرورگر ممکن است اکتیویتی اشتراک گذاری یک برنامه رسانه های اجتماعی را راه اندازی کند.برای استفاده از اکتیویتی ها در برنامه خود ، باید اطلاعات مربوط به آنها را در مانیفست برنامه ثبت کنید و چرخه های حیات اکتیویتی را به طور مناسب مدیریت کنید. در ادامه این داکیومنت این موضوعات معرفی شده است.پیکر بندی اکتیویتی برای تعریف اکتیویتی خود ، فایل مانیفست خود را باز کنید و یک عنصر <activity> را به عنوان فرزند عنصر <application> اضافه کنید. مثلا<manifest ... > <application ... > <activity android:name=&quot.ExampleActivity&quot /> ... </application ... > ... </manifest >تنها attribute ضروری برای این عنصر android: name است که نام کلاس اکتیوتی را مشخص می کند. همچنین می توانید attribute را که خصوصیات اکتیویتی مانند تم ، label، ایکن را تعریف می کند اضافه کنید. برای کسب اطلاعات بیشتر در مورد این و سایر ویژگی ها ، به اسناد مرجع عنصر <activity> مراجعه کنید.https://developer.android.com/guide/topics/manifest/activity-elementتوجه: پس از انتشار برنامه خود ، نباید نام اکتیویتی ها را تغییر دهید. اگر این کار را انجام دهید ، ممکن است برخی از قابلیت ها مانند میانبرهای برنامه را خراب کنید. برای کسب اطلاعات بیشتر در مورد تغییرات لازم برای جلوگیری از پس از انتشار ، به مواردی که امکان تغییر ندارند مراجعه کنید.http://android-developers.blogspot.com/2011/06/things-that-cannot-change.htmlDeclare intent filters تعریف اینتنت فیلتر ها اینتنت فیلترها از ویژگی های بسیار قدرتمند پلتفرم اندروید است. آنها توانایی راه اندازی اکتیویتی را نه تنها براساس یک درخواست صریح ، بلکه با یک درخواست ضمنی نیز فراهم می کنند. به عنوان مثال ، یک درخواست صریح ممکن است به سیستم بگوید " اکتیویتی ارسال ایمیل را در برنامه Gmail شروع کن. در مقابل ، یک درخواست ضمنی به سیستم می گوید "در هر اکتیویتی که می تواند این کار را انجام دهد ، صفحه ارسال ایمیل را شروع کنید". وقتی رابط کاربری سیستم از کاربر می خواهد کدام برنامه را برای انجام این کار استفاده کند ، این کار اینتنت فیلتر است.می توانید با اعلام اتربیوت <intent-filter> در عنصر <activity> از این ویژگی استفاده کنید. تعریف این عنصر شامل یک عنصر <action> و به صورت اختیاری ، یک عنصر <category> و / یا یک عنصر <data> است. این عناصر با هم ترکیب می شوند تا نوع اینتنت را که به اکتیویتی شما می تواند پاسخ دهد ، مشخص کنند. به عنوان مثال ، قطعه کد زیر نحوه پیاده سازی اکتیویتی نشان می دهد که داده های متنی را ارسال می کند و اکتیویتی های دیگر برای این کار میتوانند از این اکتیویتی بخواهند که این کار را برایشان انجام بدهد<activity android:name=&quot.ExampleActivity&quot android:icon=&quot@drawable/app_icon&quot><intent-filter><action android:name=&quotandroid.intent.action.SEND&quot /><category android:name=&quotandroid.intent.category.DEFAULT&quot /><data android:mimeType=&quottext/plain&quot /></intent-filter></activity>در این مثال ، عنصر <action> مشخص می کند که این اکتیویتی داده ارسال می کند. اعلام عنصر <category> به عنوان DEFAULT اکتیوتی را برای دریافت درخواست های راه اندازی فعال می کند. عنصر <data> نوع داده ای را که این فعالیت می تواند ارسال کند مشخص می کند. قطعه کد زیر نحوه فراخوانی اکتیویتی شرح داده شده در بالا را نشان می دهد:// Create the text message with a stringIntent sendIntent = new Intent();sendIntent.setAction(Intent.ACTION_SEND);sendIntent.setType(&quottext/plain&quot);sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage);// Start the activitystartActivity(sendIntent);اگر قصد دارید برنامه خود مختار باشد و اجازه ندهید برنامه های دیگر اکتیویتی آن را فعال کنند ، به فیلترها دیگر نیاز ندارید. اکتیویتی هایی که نمی خواهید در دسترس برنامه های دیگر قرار بگیرید ، نبایدintent فیلتر داشته باشند و می توانید آنها را خودتان با استفاده از اینتنت صریح شروع کنید. برای کسب اطلاعات بیشتر در مورد چگونگی پاسخگویی اکتیوتی های شما به اینتنت، بخش فیلترها - اینتنت ها رو ببینیدhttps://developer.android.com/guide/components/intents-filtersتعریف پرمیژن ها برای کنترل اینکه کدام برنامه ها می توانند اکتیوتی خاصی را شروع کنند می توانید از برچسب <activity> در مانیفست استفاده کنید. اکتیویتی والدین( ؟) نمی تواند اکتیویتی بچه(؟) را راه اندازی کند مگر اینکه هر دو فعالیت دارای مجوزهای یکسان در مانیفست خود باشند. اگر برای اکتیویتی والدین عنصر <use-permission> را اعلام کنید ، هر اکتیویتی بچه باید دارای عنصر <use-permission> منطبق باشد.به عنوان مثال ، اگر برنامه شما بخواهد از یک برنامه فرضی به نام SocialApp برای به اشتراک گذاشتن یک پست در شبکه های اجتماعی استفاده کند ، SocialApp خود باید مجوز برنامه ای را که فراخوانی میکند تعریف کند:<manifest><activity android:name=&quot....&quotandroid:permission=”com.google.socialapp.permission.SHARE_POST”/>سپس ، برای اجازه دادن به تماس با SocialApp ، برنامه شما باید با مجوز تنظیم شده در مانیفست SocialApp مطابقت داشته باشد:<manifest> <uses-permission android:name=&quotcom.google.socialapp.permission.SHARE_POST&quot /> </manifest>توجه :این مطلب پیشنویس است و امکان دارد در اینده دچار تغییر شودمنبع:https://developer.android.com/guide/components/activities/intro-activities