اگر قصد دارید وارد بازار طراحی و توسعه اپلیکیشنهای اندرویدی شوید، بهتر است ابتدا با اجزای تشکیلدهنده اپلیکیشنهای اندروید آشنا شوید. به این ترتیب در واقع با ساختمان کلی برنامه آشنا خواهید شد و در نتیجه میدانید با چه چیزی روبهرو هستید. پس با ادیوری همراه باشید.
فهرست مطالب
Toggleیک اپلیکیشن اندرویدی مانند یک ساختمان از components یا اجزای مختلفی تشکیل شده است. برخی از اجزا به برخی دیگر وابسته هستند. هر جزء یک نقطه ورود است که از طریق آن سیستم یا کاربر میتواند وارد برنامه شما شود. اصلیترین اجزای اپلیکیشنهای اندروید چهار تا هستند که عبارتند از:
Activity نقطه شروع تعامل با کاربر بوده و در حقیقت یک صفحه نمایش با رابط کاربری است. به عنوان مثال، activity یک اپلیکیشن ایمیل ممکن است شامل موارد زیر باشد:
اگرچه این activityها با هم همکاری میکنند تا تجربه کاربری منسجمی را در برنامه ایمیل ایجاد کنند، اما در عین حال هر یک به طور مستقل عمل میکند. در ضمن این قابلیت وجود دارد که اگر اپلیکیشن ایمیل اجازه دهد، اپلیکیشن دیگر بتواند هر یک از این activityها را شروع کند.
برای مثال اپلیکیشن دوربین میتواند فعالیتش را در اپلیکیشن ایمیل شروع کند و به کاربر اجازه به اشتراک گذاشتن یک عکس را بدهد.
سرویس در واقع مولفه یا جزئی است که برنامه را در بک گراند گوشی فعال (در حال run) نگه میدارد. از آنجا که سرویسها در بک گراند کار میکنند رابط کاربری ندارند. برای مثال ممکن است یک موسیقی را در بک گراند اجرا کنید در حالی که در یک برنامه دیگر مشغول بازی باشید یا مثلا چیزی از اینترنت در حال دانلود باشد و شما در اینستاگرام بچرخید.
همان طور که پیشتر گفته شد، اجزا از هم جدا نیستند و همه جزئی از یک ساختمان واحد هستند. پس با هم کار میکنند؛ یعنی یک component دیگر مثل activity میتوانند service را شروع کرده یا شروع آن را به تعامل کاربر با آن مقید کند. در کل دو service کاملا مجزا – از نظر معنایی – در هر اپلیکیشن وجود دارد که نحوه مدیریت اپ را مشخص میکنند:
این نوع سرویسها اساسا سرویسهایی هستند که برای پروسههای دیگر یک API فراهم میکنند. سیستم میداند که بین این پروسهها یک نوع وابستگی وجود دارد. به همین دلیل برای مثال اگر پروسه A به یک سرویس در پروسه B وابسته باشد، میداند که باید پروسه B و سرویسش را به خاطر A فعال نگه دارد. پس به همین جهت اگر پروسه A برای کاربر مهم باشد، سیستم میداند باید با پروسه B هم طوری رفتار کند که گویی برای کاربر مهم است.
به خاطر انعطافپذیریهایی که در services وجود دارد، سرویسها تبدیل به بلوکهای واقعا مفیدی از این ساختمان فرضی شدهاند. تصاویر پس زمینه زنده، نوتیفیکیشنها، اسکرین سیورها، سرویسهای accessibility و خیلی از قابلیتهای مهم سیستم بر اساس services بنا شدهاند.
Content providers به معنی ارائهدهندگان محتوا یک سری دادههای اپلیکیشن را مدیریت میکنند که کاربر میتواند در فایلهای سیستمش ذخیره کند. محل ذخیره دادهها میتواند در وب، در دیتابیس SQLite یا هر محل دیگری که اپ به آن دسترسی دارد باشد.
Content providers همچنین اجازه دسترسی سایر اپلیکیشنها به دادهها یا تغییر آنها را صادر میکند. برای مثال خیلی از اپلیکیشنها نیاز به دسترسی به contacts یا فهرست مخاطبین دارند. این اجازه (البته در صورت تأیید کاربر) از سوی content provider داده میشود.
همان طور که content providerها برای دسترسی دادن به سایر اپها لازم هستند، برای حفظ حریم خصوصی شما در اپ و جلوگیری از انتشار دادههای خصوصی مفیدند.
Broadcast receiver جزئی از اجزای تشکیلدهنده اپلیکیشن اندروید است که کمک میکند تا سیستم بتواند حوادث را خارج از جریان کاربر به اپلیکیشن منتقل کند. در نتیجه اپلیکیشن میتواند به اطلاعیههایی که در سطح کل سیستم پخش میشوند پاسخ دهد.
Broadcast receiver میتوانند حتی به اپلیکیشنهایی که در حال حاضر اجرا نشدهاند نیز حوادث را منتقل کند. بنابراین وقتی مثلا یک اپلیکیشن برای یک زمان مشخص برنامهریزی شده تا هشداری به کاربر بدهد، به کمک اطلاعاتی که این component به آن میرساند کارش را انجام میدهد بدون اینکه نیاز به اجرای برنامه در بک گراند باشد.
لازم است بدانید broadcast receiver نیازی به رابط کاربری ندارد، بلکه از نمایش نوتیفیکیشن در نوار وضعیت گوشی استفاده میکند؛ چون در اکثر مواقع فقط یک دریچه است به سوی یک component دیگر، کار زیادی ندارد که انجام دهد.
بیشتر بخوانید: راهنمای کامل میزان درامد از گوگل ادموب
همان طور که گفته شد، اجزای تشکیلدهنده یک اپلیکیشن اندرویدی زیاد است. تاکنون با اصلیترین مولفههای آن آشنا شدیم. اکنون شما را با چند جزء دیگر که نسبت به سایرین از اهمیت بیشتری برخوردارند آشنا خواهیم کرد.
این فایل باید در root دایرکتوری اپ قرار بگیرد. قبل از اینکه سیستم اندروید یک مولفه یا component اپ را شروع کند به این فایل مراجعه میکند تا ببیند آیا اصلا مولفه مورد نظر وجود دارد یا خیر. در واقع اپ باید تمام مولفههایش را در این فایل ارائه کند. سایر قابلیتهایی که به کمک این component امکانپذیر میشوند عبارتند از:
تشخیص دسترسیهایی که اپلیکیشن نیاز دارد؛ مثل دسترسی به اینترنت یا فهرست مخاطبان
اعلام حداقل سطح API مورد نیاز اپلیکیشن
اعلام ویژگیهای سخت افزاری و نرم افزاری مورد استفاده یا مورد نیاز اپ؛ مثل بلوتوث یا دوربین
اعلام API libraries که اپ نیاز دارد از آنها لینک بگیرد؛ مثل Google Maps Library
این component دستوری که باید اجرا شود را به صورت انتزاعی توصیف میکند. بیشترین استفاده مهمی که از این component میشود در راه اندازی activities است. در این جا intent مانند یک چسب بین activities عمل میکند و در پشت صحنه اپ به اجرا شدن فعالیت مورد نظر کمک میکند.
منابع یا resources از چیزی بیشتر از کدها تشکیل شده است اما خودش به منابع دیگری نیاز دارد که جدا از کدهای منبع هستند؛ مثلا تصاویر، فایلهای صوتی و هر چیزی که به ارائه تصویری اپلیکیشن مربوط باشد. مثلا میتوانید انیمیشنها، فهرستها، استایل، رنگها و قالب فعالیتی که کاربر با آن رو به رو میشود را با فایلهای XML تعریف کنید.
به علاوه، app resources امکان بهروزرسانی اپلیکیشن را بدون نیاز به تغییر کدها فراهم کرده است. هم چنین با فراهم کردن منابع جایگزین این امکان را به وجود آورده که اپلیکیشن برای دستگاههای متنوع – با زبانها و صفحه نمایشهای مختلف – قابل پیکربندی باشد.
مجوزها یا permissions با حفظ دسترسی به دادهها و فعالیتهای محدود شده از امنیت کاربر محافظت میکنند.
انواع Permissions عبارتند از:
بیشتر بخوانید: راهنمای دریافت مجوز اپلیکیشن
جمعبندی
تعداد اجزای مختلف برنامهها در اندروید خیلی بیشتر از تعدادی است که بتوان در یک مطلب کوتاه به آنها اشاره کرد اما در این مقاله سعی شد تا آنجا که ممکن است شما را با مهمترین اجزای اصلی و فرعی اپلیکیشن اندرویدی آشنا کنیم.
منابع:
https://developer.android.com/guide/components/fundamentals
https://developer.android.com/guide/topics/permissions/overview
https://developer.android.com/reference/android/content/Intent